Visual Studio 2017でSQLiteを使ったWindowsフォームアプリ開発

Visual Studio 2017でSQLiteを使ったWindowsフォームアプリを開発してみました。
まだサーバーエクスプローラーやTableAdaptorを使ったGUIでの開発には対応していないようです。
今回はDataAdapterを使った開発方法になります。

#環境
Windows 7 Professional SP1 64bit
Visual Studio 2017 Community
※事前にSQLiteのインストールはしていません。

#プロジェクト作成
新しいプロジェクトから「Visual Basic」、「Windowsクラシックデスクトップ」の「Windowsフォームアプリケーション」を選択します。（.NET Framework 4.6.1）

![aaa.png](https://qiita-image-store.s3.amazonaws.com/0/112075/06ad5fb9-30f5-ce3a-29eb-54f9146dc1fb.png)

#System.Date.SQLiteパッケージインストール
ソリューションエクスプローラーからプロジェクトを右クリックして「NuGet パッケージの管理...」を選択します。

![bbb.png](https://qiita-image-store.s3.amazonaws.com/0/112075/b319e14d-970d-8bb8-f120-6755d03bee40.png)

次のように表示されたら左上の「参照」を選択して検索エリアに「sqlite」と入力します。
一番上に「System.Date.SQLite」が表示されたら選択してインストールボタンを押します。

![ccc.png](https://qiita-image-store.s3.amazonaws.com/0/112075/a0979514-63ad-20f0-6942-b0e02aab1a70.png)

ダイアログが表示されたらOKボタンを押します。

![ddd.png](https://qiita-image-store.s3.amazonaws.com/0/112075/02e4cf70-ab86-0643-9f8a-20c934dcdb6e.png)

System.Date.SQLiteがインストールされます。

#フォームデザイン
フォームにボタン２つとデータグリッド(DataGridView)を配置します。

![eee.png](https://qiita-image-store.s3.amazonaws.com/0/112075/ecbcf98d-bebf-c9d0-0645-1d45ed8d0c42.png)

データベース作成ボタンを押すとデータベース(sample.dbファイル)が作成され、Sampleテーブルが作成されるようにします。
検索ボタンを押すとSampleテーブルを検索して結果をデータグリッドに表示します。

#ソースコード
データベースを作成してSampleテーブルを検索するプログラムを作成します。

```vbnet:Form1.vb
Imports System.Data.SQLite

Public Class Form1

    ''' <summary>
    ''' データベース作成ボタンクリック
    ''' </summary>
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Try
            Using con As New SQLiteConnection("Data Source=sample.db")
                con.Open()
                Using cmd As SQLiteCommand = con.CreateCommand()
                    cmd.CommandText = "CREATE TABLE Sample (ID INTEGER PRIMARY KEY, Name NVARCHAR(128), Age INTEGER)"
                    cmd.ExecuteNonQuery()
                    cmd.CommandText = "INSERT INTO Sample (Name, Age) VALUES('一郎', 10)"
                    cmd.ExecuteNonQuery()
                    cmd.CommandText = "INSERT INTO Sample (Name, Age) VALUES('二郎', 20)"
                    cmd.ExecuteNonQuery()
                    cmd.CommandText = "INSERT INTO Sample (Name, Age) VALUES('三郎', 30)"
                    cmd.ExecuteNonQuery()
                End Using
            End Using
            MessageBox.Show("Sampleデータベース作成成功", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information)
        Catch ex As Exception
            MessageBox.Show("Sampleデータベース作成失敗" + Environment.NewLine + ex.Message, Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub

    ''' <summary>
    ''' 検索ボタンクリック
    ''' </summary>
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Using con As New SQLiteConnection("Data Source=sample.db")
            Dim ds As New DataSet
            Dim da As New SQLiteDataAdapter("SELECT * FROM Sample", con)
            da.Fill(ds, "Sample")
            Me.DataGridView1.DataSource = ds.Tables("Sample")
        End Using
    End Sub
End Class
```

#アプリケーション実行
アプリケーションを実行してデータベース作成ボタンを押してから検索ボタンを押すとSampleテーブルの検索結果が表示されます。

![fff.png](https://qiita-image-store.s3.amazonaws.com/0/112075/eaf091d5-a663-939f-485b-b1eb7fb2c682.png)