Skip to content

Visual Basic.NET SQLiteの利用③

Posted in Visual Basic .NET, プログラム関係, and 技術メモ


データテーブルを削除・作成するロジックサンプル

過去の記事はSELECT・INSERT文を発行してデータを取得するロジックでしたが、今度はCREATE文とDROP文のサンプルロジックです。

★ 前々回の記事 ★

Visual Basic.NET SQLiteの利用

★ 前回の記事 ★

Visual Basic.NET SQLiteの利用②

なお、このブログ内に記載しているソースの転載・転用については何も縛りはありません。
ご使用の状況の如何に問わず、作者たる当方は結果についてその責任を一切負いません。ご使用は自己責任の範囲でお願いいたします。


    Private Function SQLiteTable_DeleteCreate(ByVal strSQLiteDB As String) As Boolean

        SQLiteTable_DeleteCreate = False

        Try

            'データベースファイルの存在確認
            If System.IO.File.Exists(strSQLiteDB) = False Then
                '存在しない場合はエラーを出力して終了する
                MessageBox.Show("エラー", "エラーが発生しました。", MessageBoxButtons.OK, MessageBoxIcon.Error)
                Return False
                Exit Function

            End If

            Dim Connection As New SQLiteConnection
            Dim Command As SQLiteCommand
            Dim DataExecute As Integer
            Dim strSQL As String = String.Empty

            '接続文字列を設定
            Connection.ConnectionString = "Version=3;Data Source=" & strSQLiteDB & ";New=False;Compress=True;"

            'オープン
            Connection.Open()

            'コマンド作成
            Command = Connection.CreateCommand

            '既存テーブルの削除
            '<<< SQLの作成【得意先マスタ】 >>>
            strSQL = "DROP TABLE 得意先マスタ "
            'SQLをセット
            Command.CommandText = strSQL
            'データ更新
            Try
                DataExecute = Command.ExecuteNonQuery()

            Catch ex As Exception

            End Try

            '新規テーブルの作成
            '<<< SQLの作成【得意先マスタ】 >>>
            strSQL = "CREATE TABLE 得意先マスタ ("
            strSQL += "   得意先コード  INTEGER     DEFAULT  0  NOT NULL "
            strSQL += "  ,得意先名称1  VARCHAR(64) DEFAULT ' ' NOT NULL "
            strSQL += "  ,得意先名称2  VARCHAR(64) DEFAULT ' ' NOT NULL "
            strSQL += "  ,大分類コード  VARCHAR(4)  DEFAULT ' ' NOT NULL "
            strSQL += "  ,中分類コード  VARCHAR(4)  DEFAULT ' ' NOT NULL "
            strSQL += "  ,小分類コード  VARCHAR(4)  DEFAULT ' ' NOT NULL "
            strSQL += "  ,CONSTRAINT ACCOUNT_PKY PRIMARY KEY (得意先コード) "
            strSQL += "  ) "

            'SQLをセット
            Command.CommandText = strSQL
            'データ更新
            DataExecute = Command.ExecuteNonQuery()


            'SQL作成(最適化の実行)
            Command.CommandText = "VACUUM"
            'データ更新
            DataExecute = Command.ExecuteNonQuery()

            '破棄
            Command.Dispose()
            Connection.Close()
            Connection.Dispose()

            Return True

        Catch ex As Exception

            'エラー処理
            Return False

        End Try
    End Function

このサンプルでは得意先マスタをDROPしてから再度、Createしています。
DELETE文を発行して削除するより、テーブル自体を消して作った方が処理が早い場合があります。
ここでポイントがこのような作業(表を消して作った)を繰り返すとSQLiteのファイル自体が肥大化していきますので、最適化を行って整理しています。
このように処理を入れることで常に最適化されたファイルを保つことができます。
ただし、最適化自体に処理時間を取られるような大きなファイルの場合はあまりお勧めできる方法ではありません。ケースバイケースで手法を模索が必要です。

まだまだ応用や使い道について調べてメモします。次回へ続きます。

Be First to Comment

    コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です

    CAPTCHA