vb.net sql参数'value'附近的语法不正确

时间:2019-03-24 09:56:35

标签: sql sql-server vb.net

我是这里的新手,我正在尝试将整数转换为varbinary,以插入到已制成的SQL表中。我已经包含了代码,在“ 523641”附近的语法错误,这是我尝试转换的HOUSE_ID

我也将int转换为字节数组,并向命令添加了一个参数,但结果相同

Dim varbin As String = " convert(varbinary, '" & houseid & "')"
obj = objCon.CreateCommand()
strSQL = "insert into " & tbl & " (hello, HOUSE_ID, world) VALUES ('" & hello & "','" & varbin & "','" & world & "')"
obj.CommandText = strSQL
obj.ExecuteNonQuery()

预期结果是将523641放入varbinary(50)列。

1 个答案:

答案 0 :(得分:1)

不确定为什么要在varbinary列中存储整数,但是可以将BitConverter与参数化查询一起使用。对于因执行而变化的值,请始终使用参数而不是字符串连接,因为参数在安全性,性能和易用性方面具有许多好处。

Dim varbin As Byte() = BitConverter.GetBytes(houseid)
obj = objCon.CreateCommand()
strSQL = "insert into " & tbl & " (hello, HOUSE_ID, world) VALUES (@hello, @varbin, @world);"
obj.Parameters.Add("@hello", SqlDbType.VarChar, 50).Value = hello
obj.Parameters.Add("@varbin", SqlDbType.VarBinary, 50).Value = varbin
obj.Parameters.Add("@world", SqlDbType.VarChar, 50).Value = world
obj.CommandText = strSQL
obj.ExecuteNonQuery()