我已经在lol之前发布了一个关于这段代码的问题。但现在我遇到了一个不同的问题,需要帮助。基本上这是用VB.NET编码的Windows窗体上的搜索按钮的代码。
Private Sub SearchButton_Click(sender As Object, e As EventArgs) Handles SearchButton.Click
Dim cnnOLEDB As New OleDbConnection
Dim cmdOLEDB As New OleDbCommand
Dim strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & System.Environment.CurrentDirectory & "\All Keyed Up, Lock & Safe, LLC.accdb"
cnnOLEDB.ConnectionString = strConnectionString
cnnOLEDB.Open()
Dim Connection As New SqlClient.SqlConnectionStringBuilder
Connection.DataSource = "file:///C:\Users\thelukester145\Documents\All%20Keyed%20Up\All%20Keyed%20Up,%20Lock%20&%20Safe,%20LLC.accdb"
Dim objSQLConnection = New SqlClient.SqlConnection(Connection.ConnectionString)
Dim cmd As New SqlCommand()
Dim myTable As New DataTable()
Dim SearchFor = SearchBox.Text
If AddressButton.Checked Then
cmd.Connection = objSQLConnection
cmd.CommandText = "SELECT * FROM [McDonald's-Corporate Stores] WHERE [Address] LIKE '%" & SearchFor & "%'"
Dim myAdapter As New SqlDataAdapter(cmd)
myAdapter.Fill(myTable)
DataGrid.DataGridView1.DataSource = myTable
ElseIf NumberButton.Checked Then
cmd.Connection = objSQLConnection
cmd.CommandText = "SELECT * FROM [McDonald's-Corporate Stores] WHERE [McOpCo#] LIKE '%" & SearchFor & "%'"
Dim myAdapter As New SqlDataAdapter(cmd)
myAdapter.Fill(myTable)
DataGrid.DataGridView1.DataSource = myTable
End If
DataGrid.Show()
cnnOLEDB.Close()
End Sub
尝试搜索的数据库是我们家庭商务的客户数据库。我正在尝试搜索客户的地址或商店号码。我已经解决了谁知道有多少致命的错误,但最新的一个让我有点难过。它在myAdapter.Fill(myTable)上崩溃了。它给出的错误信息是:
System.Data.dll中出现未处理的“System.Data.SqlClient.SqlException”类型异常
其他信息:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:SQL网络接口,错误:25 - 连接字符串无效)
非常感谢任何帮助:)
答案 0 :(得分:3)
好吧,您可以自由地将OleDb
类与SqlClient
类混合。这两个是针对不同的数据库类型。 Access需要OleDb,SqlClient类用于Sql Server。
所以你需要更改所有类SqlCommand,SqlCommandBuilder,SqlDataAdapter,SqlConnectionStringBuilder以及相应的类OleDbCommand,OleDbCommandBuilder,OleDbDataAdapter,OleDbConnectionStringBuilder
事实上,SqlClient库会发出错误消息,尝试使用您的连接字符串,因为它是SQL Server数据库的连接字符串,当然,它无法找到它。
另外,我不确定,但可能DataSource属性不需要前缀file:///
和带%20
的空格编码