下面的语句导致“数据类型不匹配”错误,我不知道为什么。你能帮我解决一下吗?
cmd.CommandText = "UPDATE C_DETAILS" & " SET C_ID='" & Me.C_ID.Text & "',C_NAME='" & Me.C_NAME.Text & "', C_FATHER='" & Me.C_FATHER.Text & "',C_PHONE= '" & Me.C_PHONE.Text & "',C_GENDER='" & Me.C_GENDER.Text & "',C_DOB='" & Me.C_DOB.Text & "',C_ADDRESS='" & Me.C_ADDRESS.Text & "'" & "WHERE C_ID=" & Me.C_ID.Text & ""
cmd.ExecuteNonQuery()
答案 0 :(得分:1)
表格中的C_ID
数据类型是什么?
在这里,您将其作为字符串引用(通过将值包装在单引号中):
... SET C_ID='" & Me.C_ID.Text & "' ...
在这里,您将其引用为数字(无单引号):
... WHERE C_ID=" & Me.C_ID.Text & ""
它不能同时存在。所以这两个中的一个是不正确的。
此外,这很重要,您在问题中显示的代码代表SQL injection vulnerability,这是当今软件中最常见和最危险的安全漏洞之一。请改用parameterized queries。像这样的直接字符串连接应该永远在生产代码中使用。
答案 1 :(得分:0)
因为在where
中,您没有使用单引号,暗示它是int
字段,并且它显示更新错误。因此,假设它是int
字段,您可以使用以下行作为代码的替换。
cmd.CommandText = "UPDATE C_DETAILS" & " SET C_ID=" & Me.C_ID.Text & ",C_NAME='" & Me.C_NAME.Text & "', C_FATHER='" & Me.C_FATHER.Text & "',C_PHONE= '" & Me.C_PHONE.Text & "',C_GENDER='" & Me.C_GENDER.Text & "',C_DOB='" & Me.C_DOB.Text & "',C_ADDRESS='" & Me.C_ADDRESS.Text & "'" & "WHERE C_ID=" & Me.C_ID.Text & ""
而且,这可能是真的,C_ID
可能是字符串/ varchar字段,那么您需要使用以下内容。
cmd.CommandText = "UPDATE C_DETAILS" & " SET C_ID='" & Me.C_ID.Text & "',C_NAME='" & Me.C_NAME.Text & "', C_FATHER='" & Me.C_FATHER.Text & "',C_PHONE= '" & Me.C_PHONE.Text & "',C_GENDER='" & Me.C_GENDER.Text & "',C_DOB='" & Me.C_DOB.Text & "',C_ADDRESS='" & Me.C_ADDRESS.Text & "'" & "WHERE C_ID='" & Me.C_ID.Text & "'"