4

特定のテーブルからいくつかの行を取得するためだけに、ローカルに保存されたファイル (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

クラス終了

4

1 に答える 1

4

SQLite 用の特定の ADO.NET プロバイダーによって提供されるクラスを使用する必要があります。
ただし、最初に、必要なビットをソース サイトからダウンロードしてインストールする必要があります。
64 ビットおよび 32 ビットのプロバイダーとサポートされるフレームワークのバージョンについては、必ずよくお読みください。

その後、プロジェクト参照セクションでプロバイダーを参照Imports System.Data.SQLiteし、ソース ファイルに適切なステートメントを追加する必要があります (ステートメントを置き換えSystem.Data.SqlClientます) 。

最後に、SQLite クラスを使用するようにコードを変更し、SQLite 構文の接続文字列を修正する必要があります。

Dim connection As String = "Data Source=" & Form1.connstring & ";Version=3"
Dim SQLConn As New SQLiteConnection
Dim SQLcmd As New SQLiteCommand
Dim SQLdr As SQLiteDataReader

SQLConn.ConnectionString = connection
SQLConn.Open()

SQLcmd.Connection = SQLConn
SQLcmd.CommandText = SQLstr
SQLdr = SQLcmd.ExecuteReader()
While SQLdr.Read()
    MessageBox.Show(SQLdr(fieldIndexHere).ToString)
    Form1.ListBox1.Text = SQLdr(fieldIndexHere).ToString
End While

SQLdr.Close()
SQLConn.Close()
于 2013-10-23T22:10:09.210 に答える