2019-09-25に投稿

【VB.NET】SQLiteのデータベース及びテーブルを動的に作成してみる

今回はSQLiteを使ったプログラムを作っていきます。

プログラムは前回のものを流用しませんが、WPFのものを移植する感じになります。

【WPF】SQLiteを使ってデータを DataGrid に表示してみる

SQLiteのパッケージをインストール

SQLite を利用するためのパッケージをインストールします。

NuGetパッケージ管理

ソリューションエクスプローラーからプロジェクトを選択、右クリックし「Nuget パッケージの管理」を選択します。

パッケージの追加

Nuget パッケージ管理画面が表示されるので、検索窓に「SQLite」を入力し「System.Data.SQLite」を選択、インストールボタンをクリックします。

確認ダイアログ

変更の確認ダイアログが表示されるので、「OK」ボタンをクリックします。

出力ビュー

出力ビューに「終了」が出力されればOKです。

ソリューションエクスプローラー

ソリューションエクスプローラーの「参照」を開くと「System.Data.*」が追加されていることが確認できます。

ビルドを実行する

リビルドの実行

上部メニューの「ビルド」>「ソリューションのリビルド」を選択します。

ファイルが出力される

プロジェクトのディレクトリ>bin>Target>x86 、x64 に「SQLite.Interop.dll」が出力されていることが確認できます。

プログラム修正

ロードイベントの追加

フォームのプロパティ

デザイナー画面を開き、フォームを選択した状態でプロパティウィンドウの「Load」欄をダブルクリックします。

次のようにプログラムが自動生成されます。

Form1.vb

    Public Class Form1
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        End Sub
    End Class


フォームロード時にテーブルを作成する

フォームロード(アプリケーション起動時)に、テーブルを作成するようにプログラムを修正、
先程追加したイベントに次の処理を記述します。

Form1.vb

    Imports System.Data.SQLite

    Public Class Form1

        ''' <summary>
        ''' フォームロード時の処理
        ''' </summary>
        ''' <param name="sender"></param>
        ''' <param name="e"></param>
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

            Using conn As New SQLiteConnection("Data Source=SampleDb.sqlite")

                ' データベースオープン
                conn.Open()

                ' テーブルが存在しなければ作成
                Using command = conn.CreateCommand()
                    Dim sb As New System.Text.StringBuilder()
                    sb.Append("CREATE TABLE IF NOT EXISTS MSTKIND (")
                    sb.Append("  KIND_CD NCHAR NOT NULL")
                    sb.Append("  , KIND_NAME NVARCHAR")
                    sb.Append("  , primary key (KIND_CD)")
                    sb.Append(")")

                    command.CommandText = sb.ToString()
                    command.ExecuteNonQuery()

                    sb.Clear()
                    sb.Append("CREATE TABLE IF NOT EXISTS TBLCAT (")
                    sb.Append("  NO INT NOT NULL")
                    sb.Append("  , NAME NVARCHAR NOT NULL")
                    sb.Append("  , SEX NVARCHAR NOT NULL")
                    sb.Append("  , AGE INT DEFAULT 0 NOT NULL")
                    sb.Append("  , KIND_CD NCHAR DEFAULT 0 NOT NULL")
                    sb.Append("  , FAVORITE NVARCHAR")
                    sb.Append("  , primary key (NO)")
                    sb.Append(")")

                    command.CommandText = sb.ToString()
                    command.ExecuteNonQuery()

                End Using

                ' データベースクローズ
                conn.Close()

            End Using
        End Sub

    End Class


アプリケーションの実行

上部メニューの開始ボタンをクリックし、アプリケーションを実行すると「MSTKIND」、「TBLCAT」テーブルが作成されます。

A5m2で確認

A5m2などを使って確認をしてください。

以上でひとまず完了です。

まとめ

少し長くなったのでここまにして続きは次回にします。

次回はコンボボックス、データグリッドにデータベースから取得したデータを表示したいと思います。

ではでは。

Originally published at www.doraxdora.com

doraxdora

IT関係の仕事をしています/1985年生まれの東京在住/便利なサービスやツール漁りや料理などが好き/2017年~ブログやってます/自分でサービスとか作ってリリースしたい/何かありましたらお気軽にDMどうぞ

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

関連記事

コメント