2013-10-23 320 views
0
myConnection.Open() 
    rtb_Address.Clear() 
    txt_Name.Clear() 
    Dim str As String 
    str = "SELECT * FROM table1 WHERE (cus_ID = '" & txt_ID.Text & "')" 
    Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection) 

    dr = cmd.ExecuteReader() 

    While dr.Read() 
     rtb_Address.Text = dr("cus_Addr").ToString 
     txt_Name.Text = dr("cus_Name").ToString 
    End While 
    myConnection.Close() 

错误DR = cmd.ExecuteReader()数据类型不匹配

博士被声明为OleDbDataReader

+0

“数据类型不匹配。”是一个包罗万象的错误 - 读SQL语法错误。可能cus_ID是数字,比较文本不是数字。一些后端容忍引用数字文本 - 如果你不只是不插入引号。 – rheitzman

回答

0

cus_ID是probaly数值数据类型,但你尝试用一个查询它字符串:(cus_ID = 'thevalue')

只需卸下封闭'(cus_ID = thevalue)

或更好,使用参数化查询,以防止SQL注入。

-1

我想提出以下建议:

Using cmd As New OleDbCommand("SELECT * FROM table1 WHERE cus_ID = @ID", con) 
    cmd.Parameters.AddWithValue("@ID", txt_ID.Text) 

    dr = cmd.ExecuteReader() 

    While dr.Read() 
     rtb_Address.Text = dr("cus_Addr").ToString 
     txt_Name.Text = dr("cus_Name").ToString 
    End While 

End Using 
+0

错误是:标准说明中的“标准表达式中的数据类型不匹配”。 – sloth

+0

我的不好,然后作为@大师灯XiHuan和我提到,可能的原因是'围绕ID,虽然它会帮助,如果我们知道什么数据类型cus_ID是(字符串,GUID/uniqueidentifier,整数等) – Grahamvs

+0

为什么我的回答得到-1? – Grahamvs