我正在使用以下代码,但出现了错误。
将varchar值"passed"转换为数据类型int 时,转换失败
Try
con.open()
Dim query = "update NTable SET Semester=Semester+1 WHERE Semester BETWEEN 1 AND 8 "
Dim cmd As SqlCommand
cmd = New SqlCommand(query, con)
cmd.ExecuteNonQuery()
con.close()
con.open()
Dim query2 = "update NTable SET Semester='Passed' WHERE Semester=9"
Dim cmd2 As SqlCommand
cmd2 = New SqlCommand
cmd2 = New SqlCommand(query2, con)
cmd2.ExecuteNonQuery()
con.close()
display()
Catch ex As Exception
MsgBox(ex.Message)
End Try
我缺什么了吗?
Dim query2 = "update NTable SET Semester='Passed' WHERE Semester=9"
当您更新字符串值时,Semester列的数据类型是什么,但在第一个查询中更新整数值。
在这个学期变量中,您存储了什么?字符串值还是整数?显示变量声明行。
Dim query = "update NTable SET Semester=Semester+1 WHERE Semester BETWEEN 1 AND 8 "
根据成功处理的第一个UPDATE
,数据库中的Semester
列是数字数据类型。
在第二次更新中,您试图将字符类型的值'Passed'
分配给同一列。这是错误消息特别提到的问题,而不是您所假设的WHERE
子句。
这看起来像是一个常见的拼写错误,您可以在不正确更新目标字段的情况下剪切"粘贴"查询。解决方案是将查询更改为SET
,即将接受值'Passed'
的实际字段。
假设该列被称为Result
,则需要以下语句:
Dim query2 = "update NTable SET Result='Passed' WHERE Semester=9"