我试图打开一个本地存储的文件(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
结束类