我遇到了一些问题。 我有这个代码:
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 ..任何人都可以帮忙吗?
答案 0 :(得分:2)
首先,您尝试从不会自然连接的类型创建字符串。你应该使用.toString()方法。
第二,不要这样做。 :)在动态生成类似的SQL语句时,你会让自己陷入伤害的世界。使用像
这样的东西Dim strSQL2 As String = "insert into feedBackHotel (infoID, feedBackView) values(@InfoID,@FeedBackView)"
然后
objCommand2.parameters.addwithvalue("@FeedBackView",FeedBack)
objCommand2.parameters.addwithvalue("@infoID",infoID)
第三,匈牙利记谱法?并没有一贯使用?如果你要使用像匈牙利符号那样糟糕的东西,至少要一直使用它,否则你甚至都不能很好地遵守坏标准。
答案 1 :(得分:2)
您正在尝试将double连接到字符串,这会导致您的错误。您还在构建未参数化的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()