Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB.Net Sqlite-参数化查询不起作用_Vb.net_Sqlite - Fatal编程技术网

VB.Net Sqlite-参数化查询不起作用

VB.Net Sqlite-参数化查询不起作用,vb.net,sqlite,Vb.net,Sqlite,我从来没有问过任何关于stackoverflow的问题,但它已经给我带来了无数的答案! 但这一次,经过一些深入的研究,我不得不问自己 我将VB.Net与Sqlite一起使用,当我使用参数执行查询时,查询不会返回任何值。我想这与SituationString包含逗号这一事实有关,但我真的搞不懂 这是我的代码: dim ChildCtx as Integer dim SituationString as String SituationString="968,970,978,979,980,981

我从来没有问过任何关于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
连接是打开的,如果我将整个查询写进一个字符串中,查询工作正常


谢谢,

您混合了两种技术:将常量数据合并到SQL命令和使用参数传递数据

我假设
SituationString
是一个整数列表,您希望
SERVCTX\u NO

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

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

使用参数时,正如您所做的那样,
SERVCTX_NO
应该是一个精确内容为
968970978979980981995102210991119
的字符串

您的意思是,
Situationstring
被添加为Varchar(255)参数,select不会返回任何值,因为它将像
968
这样的整数与整个
9689709789799809891995102210991119
字符串进行比较?谢谢先生!这个网站很棒。