これまでに作成したクラスを使用して、実際にSQLiteのデータベース操作を行ってみます。
下準備
コードを書く前に、サンプルデータベースを作成しましょう。
SQLite Database Browserを起動したら[New Database]ボタンをクリックします。
ファイル保存ダイアログが表示されるので、C:\Work の下に、Test.db という名前で保存をします。
Edit table definition というダイアログが表示されるので、以下図のように入力して[OK]ボタンを押します。
アドレス帳をイメージしています。
最後に、SQL Databse Browserのツールバーにある[Write Changes]ボタンを押して保存をしておきます。
さて、ここからコードの実装となります。
まずは、新規クラスとしてDBTest.cs を作成します。
前回までに作成したクラスは抽象クラスなので、継承をして使用します。
コンストラクタでは、引数でデータベースファイルのフルパスを指定できるようにします。
DataProcessingメソッドには実際の(実行したいSQL)処理を記述します。
INSERT/UPDATE/DELETE文は ExecuteNonQueryメソッドで実行します。
SELECT文は、ExecuteQueryメソッドで実行します。
この例のように、DataProcessingの中で複数のSQLを実行することができます。
Public Class DbTest Inherits SQLiteCommonBase Private _dtTbl As New DataTable() ''' <summary> ''' コンストラクタ ''' </summary> ''' <param name="dataSource"></param> ''' <remarks></remarks> Public Sub New(dataSource As String) MyBase.New(dataSource) End Sub Protected Overrides Sub DataProcessing() ExecuteNonQuery("DELETE FROM ADDRESS") ExecuteNonQuery("INSERT INTO ADDRESS VALUES (1,""020-0123"", ""東京"", ""HIRO"")") ExecuteNonQuery("INSERT INTO ADDRESS VALUES (2,""020-0123"", ""北海道"", ""Jobs"")") ExecuteNonQuery("INSERT INTO ADDRESS VALUES (3,""020-0123"", ""神奈川"", ""Bill"")") _dtTbl = ExecuteQuery("SELECT * FROM ADDRESS") End Sub ''' <summary> ''' 取得したデータ ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> Public ReadOnly Property AddressTbl Get Return _dtTbl End Get End Property End Class
それでは上記クラスを使てみましょう。
フォームにボタン1つと、データグリッドビュー1つを貼り付けます。
Private Sub btnExex_Click(sender As Object, e As EventArgs) Handles btnExec.Click Dim sqlite = New DbTest("C:\Work\Test.db") 'トランザクションありで実行 sqlite.Execute() '取得したデータをデータグリッドビューに表示 DataGridView1.DataSource = sqlite.AddressTbl End Sub
以上で、SQLiteの説明は終了となります。
ご自身でカスタマイズしてより良いクラスにしてください。
C# 編
まずは、新規クラスとしてDBTest.cs を作成します。
前回までに作成したクラスは抽象クラスなので、継承をして使用します。
コンストラクタでは、引数でデータベースファイルのフルパスを指定できるようにします。
DataProcessingメソッドには実際の(実行したいSQL)処理を記述します。
INSERT/UPDATE/DELETE文は ExecuteNonQueryメソッドで実行します。
SELECT文は、ExecuteQueryメソッドで実行します。
この例のように、DataProcessingの中で複数のSQLを実行することができます。
class DbTest : SQLiteCommonBase { private DataTable _dtTbl = new DataTable(); /// <summary> /// コンストラクタ /// </summary> /// <param name="dataSource">SQLiteのデータベースファイルのフルパス</param> public DbTest(string dataSource) : base(dataSource) { } /// <summary> /// 実際の処理 /// </summary> protected override void DataProcessing() { ExecuteNonQuery("DELETE FROM ADDRESS"); ExecuteNonQuery("INSERT INTO ADDRESS VALUES (1,\"020-0123\", \"東京\", \"HIRO\")"); ExecuteNonQuery("INSERT INTO ADDRESS VALUES (2,\"020-0123\", \"北海道\", \"Jobs\")"); ExecuteNonQuery("INSERT INTO ADDRESS VALUES (3,\"020-0123\", \"神奈川\", \"Bill\")"); _dtTbl = ExecuteQuery("SELECT * FROM ADDRESS"); } /// <summary> /// 取得したデータ /// </summary> public DataTable AddressTbl { get { return _dtTbl; } } }
それでは上記クラスを使てみましょう。
フォームにボタン1つと、データグリッドビュー1つを貼り付けます。
private void btnExec_Click(object sender, EventArgs e) { DbTest sqlite = new DbTest(@"C:\Work\Test.db"); // トランザクションありで実行 sqlite.Execute(); // 取得したデータをデータグリッドビューに表示 dataGridView1.DataSource = sqlite.AddressTbl; }
実行すると、以下のように登録されたデータが表示されます。
以上で、SQLiteの説明は終了となります。
ご自身でカスタマイズしてより良いクラスにしてください。
コメント