前書き
- 自分の勉強メモ
依存関係
ソースのサンプル
テーブル作成
public void CreateTable()
{
using (var connection = new SQLiteConnection(@"Data Source=C:\aaa\DB-SQLite\test.db"));
connection.Open();
_ExecuteNonQuery(connection, "DROP TABLE IF EXISTS TMyTable");
_ExecuteNonQuery(connection, "CREATE TABLE IF NOT EXISTS TMyTable (......)");
}
protected void _ExecuteNonQuery(SQLiteConnection conn, string sql)
{
using var command = conn.CreateCommand();
command.CommandText = sql;
command.ExecuteNonQuery();
}
重複であれば、スキップ
protected const string _sqlInsertTable_Cust = @"
INSERT OR IGNORE INTO {0} (Name, Num) VALUES ('{1}', '{2}')
";
遅いであれば、TRANSACTIONを使う
_ExecuteNonQuery(connWorkDB, "BEGIN TRANSACTION");
_ExecuteNonQuery(connWorkDB, "COMMIT TRANSACTION");
2つのDB連携してSQL実行
// mainDBを接続する。
using var connWorkDB = new SQLiteConnection(_ConnStringWork());
connWorkDB.Open();
_ExecuteNonQuery(connWorkDB, "BEGIN TRANSACTION");
// 別DBをAttachし、名称(SaveDB)を付ける
using (SQLiteCommand cmd = connWorkDB.CreateCommand()) {
cmd.CommandText = @"ATTACH [Save.db] AS SaveDB;";
cmd.ExecuteNonQuery();
}
// sql文では、SaveDB/mainで、DBを区別
using (SQLiteCommand cmd = connWorkDB.CreateCommand()) {
cmd.CommandText = "SaveDB.TName, main.TName.....";
cmd.ExecuteNonQuery();
}
_ExecuteNonQuery(connWorkDB, "COMMIT TRANSACTION");
connWorkDB.Close();
DB内容確認