Vb.net oledbCnn未连接到Access数据库
我正在尝试连接到数据库。当我做一个简单的Select*时,它工作了,但当我添加WHERE子句时,它不再正常工作,并且说它无法连接。列名是正确的,我确信数据库中有Lee的姓氏。为什么在一个简单的select过程中,而不是在有where子句的情况下,这种方法会起作用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
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语句不同,动态字符串只会使数据库面临许多安全风险。