VB.Net Sqlite-参数化查询不起作用
我从来没有问过任何关于stackoverflow的问题,但它已经给我带来了无数的答案! 但这一次,经过一些深入的研究,我不得不问自己 我将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
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
字符串进行比较?谢谢先生!这个网站很棒。