在VB.NET中的Access数据库中执行SQL查询

时间:2013-11-30 00:53:09

标签: sql vb.net

我已经在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 - 连接字符串无效)

非常感谢任何帮助:)

1 个答案:

答案 0 :(得分:3)

好吧,您可以自由地将OleDb类与SqlClient类混合。这两个是针对不同的数据库类型。 Access需要OleDb,SqlClient类用于Sql Server。

所以你需要更改所有类SqlCommand,SqlCommandBuilder,SqlDataAdapter,SqlConnectionStringBuilder以及相应的类OleDbCommand,OleDbCommandBuilder,OleDbDataAdapter,OleDbConnectionStringBuilder

事实上,SqlClient库会发出错误消息,尝试使用您的连接字符串,因为它是SQL Server数据库的连接字符串,当然,它无法找到它。

另外,我不确定,但可能DataSource属性不需要前缀file:///和带%20的空格编码