繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM