[英]problem with sql statement using vb.net
我有一些问题。 我有以下代码:
Dim infoID As Integer = objCommand1.ExecuteScalar()
Dim strSQL2 As String = "insert into feedBackHotel (infoID, feedBackView) values(" + infoID + ",'" + FeedBack + "')"
Dim objCommand2 As New SqlCommand(strSQL2, conn)
objCommand2.ExecuteNonQuery()
这里的问题是.. strSQL2可以捕获上一条语句中的infoID,但是没有将其插入数据库中。 它将弹出此错误:
“从字符串“插入feedBackHotel(infoI)到类型'Double'的转换无效。”
在两个相关的表中,使用相同的数据类型(int)
但是对于feedBackHotel的infoID,我允许它为null。因为如果不使其为null,它将显示另一个错误。
我正在使用VB.NET ..有人可以帮忙吗?
首先,您尝试使用不会自然连接的类型创建字符串。 您应该使用.toString()方法。
第二,不要那样做。 :)
当您动态生成这样的sql语句时,您很容易受到伤害。 使用类似
Dim strSQL2 As String = "insert into feedBackHotel (infoID, feedBackView) values(@InfoID,@FeedBackView)"
接着
objCommand2.parameters.addwithvalue("@FeedBackView",FeedBack)
objCommand2.parameters.addwithvalue("@infoID",infoID)
第三,匈牙利符号? 而不是一贯使用? 如果您要使用糟糕的东西,例如匈牙利符号,至少要一直使用它,否则您甚至不会坚持不好的标准。
您试图将双精度型连接到字符串,这会导致您的错误。 您还正在构建未参数化的SQL语句,这是致命的罪过。 使用参数将解决您的两个问题。 尝试这样的事情:
Dim strSQL2 As String = "insert into feedBackHotel (infoID, feedBackView) values(@infoID, @Feedback)"
Dim objCommand2 As New SqlCommand(strSQL2, conn)
objCommand2.Parameters.AddWithValue("@infoID", infoID)
objCommand2.Parameters.AddWithValue("@Feedback", FeedBack)
objCommand2.ExecuteNonQuery()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.