【问题标题】:vb.net sql parameter incorrect syntax near 'value'vb.net sql参数'值'附近的语法不正确
【发布时间】:2019-03-24 09:56:35
【问题描述】:

我是新来的,我正在尝试将整数转换为 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) 列。

【问题讨论】:

  • 你能显示你桌子的ddl吗?
  • 您在varbin 变量周围加上单引号,它本身就是对CONVERT 的调用。但与其做出改变,不如认真考虑使用准备好的语句。
  • 表名:tbl 列:你好:varchar(50), null HOUSE_ID: varbinary(50), null world: varchar(50), null 我举个例子,因为表太大如果你有一个 int 并且你想将它插入一个 varbinary 的 sql 列中怎么办?
  • strSQL 字符串打印到控制台,您应该会立即看到问题。

标签: sql sql-server vb.net


【解决方案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()

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-07
  • 1970-01-01
  • 2017-08-02
  • 1970-01-01
  • 2018-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多