特定のテーブルからいくつかの行を取得するためだけに、ローカルに保存されたファイル (SQLite) を開こうとしています。私が抱えている問題は、接続を確立できないというエラーが発生し続けることです (プロバイダー: SQL ネットワーク インターフェイス、エラー: 26 - サーバー/インスタンスの特定のエラー)。これは、SQL サーバーではないため、完全に理にかなっています。ローカル データベース ファイルに保存されている情報にすぎません。それで、私はこれを間違った方法で行っていますか、それとも.dbまたは同様のファイルを処理する唯一の方法であり、何かを見落としていますか?
Dim connection As String = "Data Source=" & Form1.connstring & "; Integrated Security=true"
Dim SQLConn As New SqlConnection
Dim SQLcmd As New SqlCommand
Dim SQLdr As SqlDataReader
SQLConn.ConnectionString = connection
SQLConn.Open()
SQLcmd.Connection = SQLConn
SQLcmd.CommandText = SQLstr
SQLdr = SQLcmd.ExecuteReader()
While SQLdr.Read()
MessageBox.Show(SQLdr.ToString)
Form1.ListBox1.Text = SQLdr.ToString
End While
SQLdr.Close()
SQLConn.Close()
Form1.connstring は完全なファイル パスです。これをローカルファイルとして参照するために、「Data Source =」行でいくつかの異なるタイプの構文を試しましたが、今のところ迷っています。
これは、さまざまなデータベース ファイル (すべてローカルに保存されている) をスキャンして情報を収集する必要があるツール用です。
編集
解決:
Imports System.Data.SQLite 'Interop available on NuGet
Public Class _SQLite
Public Shared Sub SQLInq()
'Value to search as SQL Query - return first match
Dim SQLstr As String = "Select * FROM FsFileVersion WHERE FileDescription_LTH = 'Entry' LIMIT 1;"
'Define file to open - .path passed from parent form
Dim connection As String = "Data Source=" & _Compression.path
Dim SQLConn As New SQLiteConnection(connection)
Dim SQLcmd As New SQLiteCommand(SQLConn)
Dim SQLdr As SQLiteDataReader
SQLConn.Open()
SQLcmd.Connection = SQLConn
SQLcmd.CommandText = SQLstr
SQLdr = SQLcmd.ExecuteReader()
'For each query returned
While SQLdr.Read()
'Insert into textbox
Form1.Textbox1.Text = (SQLdr.GetString(SQLdr.GetOrdinal("FileVersion_LTH")))
End While
'End the connection
SQLdr.Close()
SQLConn.Close()
End Sub
クラス終了