此代码给出了语法错误。
DataGridView1.DataSource = ""
dAdapt = New OleDb.OleDbDataAdapter("select CustName, CustMobileNo, SMSDate, OilChangeStatus from invoiceHeader_tb where SMSDate =" & DTPDueDate.Value & " order by SMSDate", con)
Dim dt As New DataTable
dAdapt.Fill(dt)
Me.DataGridView1.DataSource = dt
Me.DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
Me.DataGridView1.ReadOnly = True
con.Close()
错误:
查询表达式中的语法错误(缺少运算符)' SMSDate = 25-Feb-16 4:05 PM'
答案 0 :(得分:1)
在此处添加单引号
SMSDate = '" & DTPDueDate.Value & "'
所以它会像这样
dAdapt = New OleDb.OleDbDataAdapter("select CustName, CustMobileNo, SMSDate, OilChangeStatus from invoiceHeader_tb where SMSDate ='" & DTPDueDate.Value & "' order by SMSDate", con)
答案 1 :(得分:0)
您在约会时间内缺少撇号(单引号)。
where SMSDate ='" & DTPDueDate.Value & "' order
答案 2 :(得分:0)
您的原始SQL缺少日期值附近的单引号,但仍可能无法修复错误,因为数据库可能期望某种格式的日期。
您尚未指定正在使用的数据库,但大多数人希望以“yyy-MM-dd”格式指定日期
此外,执行sql的方式也会让您对SQL Injection漏洞开放,因此您应该使用参数化查询正确执行此操作:
例如:
Public Function GetBarFooByBaz(ByVal Baz As String) As String
Dim sql As String = "SELECT foo FROM bar WHERE baz= @Baz"
Using cn As New SqlConnection("Your connection string here"), _
cmd As New SqlCommand(sql, cn)
cmd.Parameters.AddWithValue("@Baz", Baz)
Return cmd.ExecuteScalar().ToString()
End Using
End Function
此答案的参考:How do I create a parameterized SQL query? Why Should I?
这样做意味着您不必以特定格式设置日期,也无需记住是否需要围绕某个值的引号。