2017-04-17 140 views
0

我有下面的代码,当我运行它的代码行结束时,我得到它规定VB从Access数据库读取

System.Data.OleDb.OleDbException一个错误:“语法错误(缺少运算符) 查询表达式

,但我不知道这意味着什么,我使用VB(Visual Studio中)和访问数据库。该错误出现在我声明dr变量(我用于我的数据读取器)的行中。 任何帮助将不胜感激非常感谢,

Private Function CarFinder(b As String, m As String, s As String, d As Integer, e As String) 
    myConnection.ConnectionString = My.Forms.Main.connString 
    myConnection.Open() 
    Dim match As String 
    match = "SELECT * FROM CarFigures WHERE CBrand = '" & cbBrand.Text & "' CModel = '" & 
     cbModel.Text & "' and CSpec = '" & cbSpec.Text & "'" 


Using cmd As New OleDb.OleDbCommand(match, myConnection) 
cmd.Parameters.AddWithValue("@b", b) 
cmd.Parameters.AddWithValue("@m", m) 
     cmd.Parameters.AddWithValue("@s", s) 
     cmd.Parameters.AddWithValue("@d", d) 
     cmd.Parameters.AddWithValue("@e", e) 
     Dim dr = cmd.ExecuteReader() 

     If dr.Read Then 
      CO2e = dr("CCO2") 
      Ins = dr("InsuranceBand") 
      mpg = dr("CMPG") 
      time = dr("C060Time") 
      ncap = dr("CarNCAP") 
      bik = dr("Bik Rating") 

     End If 

回答

0

它看起来像你的SQL查询字符串是错误的。在“cbBrand.Text”和“CModel =”之间缺少AND。它应该像下面...

match = "SELECT * FROM CarFigures WHERE CBrand = '" & cbBrand.Text & "' and CModel = '" & cbModel.Text & "' and CSpec = '" & cbSpec.Text & "'" 
+0

稀释是谢谢你,我错过了,当我重读的代码谢谢 – Courteney

+0

另一个问题是什么错误意味着“System.IndexOutOfRangeException” – Courteney