使用vb.net的sql语句的问题

时间:2010-06-09 03:28:17

标签: sql 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 ..任何人都可以帮忙吗?

2 个答案:

答案 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()