Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net oledbCnn未连接到Access数据库_Vb.net - Fatal编程技术网

Vb.net oledbCnn未连接到Access数据库

Vb.net oledbCnn未连接到Access数据库,vb.net,Vb.net,我正在尝试连接到数据库。当我做一个简单的Select*时,它工作了,但当我添加WHERE子句时,它不再正常工作,并且说它无法连接。列名是正确的,我确信数据库中有Lee的姓氏。为什么在一个简单的select过程中,而不是在有where子句的情况下,这种方法会起作用 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim connetionString As String

我正在尝试连接到数据库。当我做一个简单的Select*时,它工作了,但当我添加WHERE子句时,它不再正常工作,并且说它无法连接。列名是正确的,我确信数据库中有Lee的姓氏。为什么在一个简单的select过程中,而不是在有where子句的情况下,这种方法会起作用

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim connetionString As String
    Dim oledbCnn As OleDbConnection
    Dim oledbAdapter As OleDbDataAdapter
    Dim ds As New DataSet
    Dim sql As String
    Dim i As Integer

    connetionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=S:\Reporting Database.mdb;"
    sql = "SELECT * FROM [extract1] WHERE [extract1].[PI First Name] = Lee"
    oledbCnn = New OleDbConnection(connetionString)
    Try
        oledbCnn.Open()
        oledbAdapter = New OleDbDataAdapter(sql, oledbCnn)
        oledbAdapter.Fill(ds)
        DataGridView1.DataSource = ds.Tables(0)
        oledbAdapter.Dispose()
        oledbCnn.Close()
    Catch ex As Exception
        MsgBox("Can not open connection ! ")
    End Try
End Sub

我想你应该把
Lee
放在引号之间,比如:

 sql = "SELECT * FROM [extract1] WHERE [extract1].[PI First Name] = 'Lee'"

提示:用于避免sql注入。

Lee不应该在引号之间吗?你是对的。很抱歉。有时候很容易忽略简单的事情stuff@L-三个正确,但准确地说是单引号。另外,与使用OLEDBPParameters的动态select语句不同,动态字符串只会使数据库面临许多安全风险。