C#でSQLite3を使う

MySQL使うほどでもない場合にSQLite使いたかったので調べてみた。

  1. ここ から System.Data.SQlite ライブラリを入手。
  2. サクっとインストール
  3. C#プロジェクト設定を .net framework 3.5にする。
  4. 参照設定に以下DLLを追加する。
    C:\Program Files (x86)\SQLite.NET\bin\System.Data.SQLite.dll
  5. 使う。
    using (SQLiteConnection cnn = new SQLiteConnection("Data Source=mydatabase.db"))
    using (SQLiteCommand cmd = cnn.CreateCommand())
    {
      cnn.Open();
    
      // CREATE文の実行
      cmd.CommandText = "CREATE TABLE FOO (ID INTEGER PRIMARY KEY, MyValue NVARCHAR(256))";
      cmd.ExecuteNonQuery(); // Create the table, don't expect returned data
    
      // INSERT文の実行
      cmd.CommandText = "INSERT INTO FOO (MyValue) VALUES('Hello World')";
      cmd.ExecuteNonQuery();
    
      // SELECT文の実行
      cmd.CommandText = "SELECT * FROM FOO";
      using (SQLiteDataReader reader = cmd.ExecuteReader())
      {
        while (reader.Read())
        {
          Console.WriteLine(String.Format("ID = {0}, MyValue = {1}", reader[0], reader[1]));
        }
      }
    }

Insyncの右クリックフリーズ回避

insyncが右クリック拡張使うときになぜかexploler巻き込んで止まるので右クリック拡張機能使わないようにして回避してみた。

  1. insyncをquit
  2. regeditで’InSyncExt’の名前を含むキーを検索して全部削除
  3. %APPDATA%\Insync\Appの以下2ファイルを別のフォルダに移動
    InsyncShellExtensions.dll
    InsyncShellExtensions64.dll
  4. insync再起動

windows serverのバックアップ

全部windows serverの標準ツールでお金かけないでやる。

diskshadow, robocopyを組み合わせるとスナップショットのバックアップがわりと簡単にできる。

手順

1:以下のスクリプト、バッチファイルを用意

(ここでは D: を \\NAS-SV\BackupTest\d にバックアップする仮定で記述しているので適時変更のこと。)

diskshadow_script.txt

set context persistent
set verbose on
#スナップショットのエイリアス作成
add volume d: alias BACKUPDISK
#スナップショット作成
create
#スナップショットをIドライブとして表示
expose %BACKUPDISK% i:
#スナップショットドライブからバックアップするコマンド実行
exec backup_robocopy.cmd
#スナップショットドライブ削除(後始末)
delete shadows exposed i:

backup_robocopy.cmd

REM どこにでもよくあるrobocopy
robocopy i:\ \\NAS-SV\BackupTest\d /MIR /np /r:1 /w:10 /XJ
REM ドライブルートをrobocopyするとなぜか隠し属性がつくのでこれで回避する
attrib -H -S \\NAS-SV\BackupTest\d
verify >nul

shadowbackup.bat

rem echo off
date /t
time /t
cd /d %~dp0
REM 実際に必要な部分はこの1行。ほかは実行時間をログに残すためにやってる。
diskshadow /s diskshadow_script.txt > diskshadow_log.txt
date /t
time /t
pause

2:shadowbackup.batを実行。

参考

robocopy後のコピー先フォルダが隠しフォルダになってしまう