2013-10-02 24 views
0

当我尝试将值传递给数据适配器,但我得到的错误“并不是所有的变量绑定”:未绑定所有的变量参数传递

Dim strSql As String = "SELECT * FROM table WHERE A_DT>:a AND B_DT<:b" 
Dim conn As New OleDb.OleDbConnection(strConn) 
Dim datData As New OleDb.OleDbDataAdapter(strSql, CType(conn, OleDb.OleDbConnection)) 
Dim dtbdata As New DataTable 
datData.SelectCommand.Parameters.Add(":a", OleDb.OleDbType.DBDate).Value = Date.Parse(A_Date) 
datData.SelectCommand.Parameters.Add(":b", OleDb.OleDbType.DBDate).Value = Date.Parse(B_Date) 
datData.Fill(dtbdata) '<--- Error happen in this line 

回答

0

注意的OleDb不支持命名参数,您需要使用 ”?”而不是命名参数再传给为了参数,你的代码应该是这个样子:

Dim strSql As String = "SELECT * FROM table WHERE A_DT>? AND B_DT<?" 
Dim conn As New OleDb.OleDbConnection(strConn) 
Dim datData As New OleDb.OleDbDataAdapter(strSql, CType(conn, OleDb.OleDbConnection)) 
Dim dtbdata As New DataTable 
datData.SelectCommand.Parameters.Add(New OleDb.OleDbParameter("@a", Date.Parse(A_Date))) 
datData.SelectCommand.Parameters.Add(New OleDb.OleDbParameter("@b", Date.Parse(B_Date))) 
datData.Fill(dtbdata) 

如果你仍然坚持使用命名的参数,我会建议使用SqlClient代替。