これまでに作成したクラスを使用して、実際に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の説明は終了となります。
ご自身でカスタマイズしてより良いクラスにしてください。



コメント