为什么即使使用范围过滤器也要"conversion failed when converting the varchar value 'passed' to data type int"



我正在使用以下代码,但出现了错误。

将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"

相关内容

最新更新