[SQLite] 作成したクラスでSQLiteを操作する

スポンサーリンク

これまでに作成したクラスを使用して、実際にSQLiteのデータベース操作を行ってみます。

下準備
コードを書く前に、サンプルデータベースを作成しましょう。
SQLite Database Browserを起動したら[New Database]ボタンをクリックします。
ファイル保存ダイアログが表示されるので、C:\Work の下に、Test.db という名前で保存をします。

サンプルデータベースの作成

Edit table definition というダイアログが表示されるので、以下図のように入力して[OK]ボタンを押します。
アドレス帳をイメージしています。

テーブルの作成
最後に、SQL Databse Browserのツールバーにある[Write Changes]ボタンを押して保存をしておきます。

さて、ここからコードの実装となります。

VB.NETはこちら
C#はこちら


VB.NET 編

まずは、新規クラスとして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の説明は終了となります。
ご自身でカスタマイズしてより良いクラスにしてください。

コメント

タイトルとURLをコピーしました