データテーブルを削除・作成するロジックサンプル
過去の記事はSELECT・INSERT文を発行してデータを取得するロジックでしたが、今度はCREATE文とDROP文のサンプルロジックです。
★ 前々回の記事 ★
★ 前回の記事 ★
なお、このブログ内に記載しているソースの転載・転用については何も縛りはありません。
ご使用の状況の如何に問わず、作者たる当方は結果についてその責任を一切負いません。ご使用は自己責任の範囲でお願いいたします。
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のファイル自体が肥大化していきますので、最適化を行って整理しています。
このように処理を入れることで常に最適化されたファイルを保つことができます。
ただし、最適化自体に処理時間を取られるような大きなファイルの場合はあまりお勧めできる方法ではありません。ケースバイケースで手法を模索が必要です。
まだまだ応用や使い道について調べてメモします。次回へ続きます。