Visual Basic 6 で SQLite データベースを使用する
セットアップ
SQLite を VB6 で使用するには、以下の手順が必要です。
-
SQLite ライブラリを VB6 プロジェクトに追加
- ダウンロードした SQLite ライブラリ (
sqlite3.dll
) を、VB6 プロジェクトフォルダにコピーします。 - VB6 プロジェクトを開き、プロジェクト > 参照設定 を選択します。
- 参照の追加 ダイアログボックスで、参照 タブから
sqlite3.dll
を選択して OK をクリックします。
- ダウンロードした SQLite ライブラリ (
-
VB6 プロジェクトに ADO を追加
- データベースとの接続と操作には、ActiveX Data Objects (ADO) を使用します。
- プロジェクト > コンポーネント を選択します。
- Microsoft ActiveX Data Objects 2.x Library を選択して OK をクリックします。
データベースの作成
以下のコードは、SQLite データベースファイル my_database.db
を作成し、Customers
というテーブルを作成します。
Dim cnn As New ADODB.Connection
Dim cmd As New ADODB.Command
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=my_database.db;"
' データベースファイルが存在しない場合は作成される
cnn.Open
cmd.CommandText = "CREATE TABLE Customers (Id INTEGER PRIMARY KEY AUTOINCREMENT, Name VARCHAR(255), Age INTEGER)"
cmd.Connection = cnn
cmd.ExecuteNonQuery
cnn.Close
データベースへのデータ挿入
以下のコードは、Customers
テーブルにデータを挿入します。
Dim cnn As New ADODB.Connection
Dim cmd As New ADODB.Command
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=my_database.db;"
cnn.Open
cmd.CommandText = "INSERT INTO Customers (Name, Age) VALUES (?, ?)"
cmd.Parameters.Append cmd.CreateParameter("@Name", adVarChar, 255, "John Doe")
cmd.Parameters.Append cmd.CreateParameter("@Age", adInteger, 30)
cmd.ExecuteNonQuery
cnn.Close
Dim cnn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=my_database.db;"
cnn.Open
cmd.CommandText = "SELECT * FROM Customers"
cmd.Connection = cnn
rs = cmd.Execute
Do While Not rs.EOF
Debug.Print rs("Id") & " - " & rs("Name") & " - " & rs("Age")
rs.MoveNext
Loop
cnn.Close
Option Explicit
' ADO への参照
Dim cnn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
' データベース接続文字列
Const dbConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=my_database.db;"
' データベースファイルが存在しない場合は作成
Sub CreateDatabase()
cnn.ConnectionString = dbConnectionString
cnn.Open
cnn.Close
End Sub
' テーブル作成
Sub CreateTable()
cnn.ConnectionString = dbConnectionString
cnn.Open
cmd.CommandText = "CREATE TABLE Customers (Id INTEGER PRIMARY KEY AUTOINCREMENT, Name VARCHAR(255), Age INTEGER)"
cmd.Connection = cnn
cmd.ExecuteNonQuery
cnn.Close
End Sub
' データ挿入
Sub InsertData()
cnn.ConnectionString = dbConnectionString
cnn.Open
cmd.CommandText = "INSERT INTO Customers (Name, Age) VALUES (?, ?)"
cmd.Parameters.Append cmd.CreateParameter("@Name", adVarChar, 255, "John Doe")
cmd.Parameters.Append cmd.CreateParameter("@Age", adInteger, 30)
cmd.ExecuteNonQuery
cnn.Close
End Sub
' データ取得
Sub GetData()
cnn.ConnectionString = dbConnectionString
cnn.Open
cmd.CommandText = "SELECT * FROM Customers"
cmd.Connection = cnn
rs = cmd.Execute
Do While Not rs.EOF
Debug.Print rs("Id") & " - " & rs("Name") & " - " & rs("Age")
rs.MoveNext
Loop
cnn.Close
End Sub
' メイン処理
Sub Main()
CreateDatabase
CreateTable
InsertData
GetData
End Sub
実行方法:
- Visual Basic 6 で
sample.vb
ファイルを開きます。 - F5 キーを押してコードを実行します。
出力:
1 - John Doe - 30
- データベースへの接続を閉じる
- エラー処理
- より複雑な SQL クエリの発行
ADO.NET は、.NET Framework の一部である ADO の次世代バージョンです。 ADO.NET は、ADO よりも多くの機能とパフォーマンスを提供しますが、.NET Framework が必要です。
SQLite.NET
SQLite.NET は、SQLite データベースとの接続と操作を簡略化するオープンソースのライブラリです。 ADO や ADO.NET よりも軽量で使いやすく、.NET Framework を必要としません。
直接アクセス
SQLite は、C 言語で記述された軽量なデータベースエンジンです。 C 言語に精通している場合は、SQLite の API を直接呼び出してデータベースに接続することができます。
方法の選択
どの方法を選択するかは、プロジェクトの要件と開発者のスキルセットによって異なります。
- ADO は、最も広く使用されている方法であり、多くの開発者に習得されています。
- ADO.NET は、より多くの機能とパフォーマンスを提供しますが、.NET Framework が必要です。
- SQLite.NET は、軽量で使いやすく、.NET Framework を必要としません。
- 直接アクセスは、最も効率的な方法ですが、C 言語の知識が必要です。
database sqlite vb6