0

我从来没有问过关于 stackoverflow 的任何问题,但它已经给我带来了很多答案!但这一次,经过一些扩展的研究,我必须自己问。

我将 VB.Net 与 Sqlite 一起使用,当我使用参数执行它时,我的查询不返回任何值。我想这与SituationString包含逗号的事实有关,但我真的无法弄清楚。

这是我的代码:

dim ChildCtx as Integer
dim SituationString as String

SituationString="968,970,978,979,980,981,995,1022,1099,1119"

With DataBase

    .SQL_CMD.Parameters.Clear()
    .SQL_CMD.CommandText = "SELECT SERVCTX_NO FROM SERVCTX WHERE SERVCTX_NO IN (@situationstring) AND MASTER = '1'"
    .SQL_CMD.Parameters.Add("@situationstring", SqlDbType.VarChar, 255).Value = SituationString
    ChildCtx = .SQL_CMD.ExecuteScalar
    .SQL_CMD.Parameters.Clear()

End with

如果我将整个查询写入一个字符串,则连接已打开并且查询工作正常。

谢谢,

4

1 回答 1

0

您正在混合两种技术:将常量数据合并到 SQL 命令中并使用参数传递数据。

我想SituationString是您期望的整数列表SERVCTX_NO

因此,您必须将其合并到语句中:

.SQL_CMD.CommandText = "SELECT SERVCTX_NO FROM SERVCTX WHERE SERVCTX_NO IN ("+SituationString+") AND MASTER = '1'"
ChildCtx = .SQL_CMD.ExecuteScalar

正如您所做的那样,使用参数SERVCTX_NO应该是一个具有968,970,978,979,980,981,995,1022,1099,1119确切内容的字符串!

于 2013-10-30T15:16:00.280 回答