Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/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 在tableadapter查询中为中使用参数_Vb.net_Sql Server 2008_Parameter Passing - Fatal编程技术网

Vb.net 在tableadapter查询中为中使用参数

Vb.net 在tableadapter查询中为中使用参数,vb.net,sql-server-2008,parameter-passing,Vb.net,Sql Server 2008,Parameter Passing,我在myTableAdapter中有一个查询,它以(@S)中的WHERE列结尾。当我使用myTableAdapter.Fill(dataset.table,“text”)时,这很好,但是我找不到任何方法可以为IN参数提供多个文本字符串,例如“text1,text2”。如何做到这一点?据我所知,这是不可能的 另一种方法是使用动态SQL(即在代码中生成WHERE子句),但这是一种糟糕的做法,除非您真的不关心安全性、可维护性或可读性 另一个极端是编写一个表值函数,该函数位于接受@S参数的db服务器上。

我在myTableAdapter中有一个查询,它以(@S)中的WHERE列结尾。当我使用myTableAdapter.Fill(dataset.table,“text”)时,这很好,但是我找不到任何方法可以为IN参数提供多个文本字符串,例如“text1,text2”。如何做到这一点?据我所知,这是不可能的

另一种方法是使用动态SQL(即在代码中生成
WHERE
子句),但这是一种糟糕的做法,除非您真的不关心安全性、可维护性或可读性

另一个极端是编写一个表值函数,该函数位于接受
@S
参数的db服务器上。 这个参数应该是一个分隔字符串,然后可以在函数中使用T-SQL
开始时解析它。。。结束
构造,将字符串中的每个项插入临时表

最后,查询的
WHERE
子句将变成如下内容:

WHERE myField in (SELECT myTempColumn from [dbo].[myParsingFunction] (@S))

,看第二个答案,我觉得更好。上面来自曼吉的答案基本上解决了这个问题。谢谢