如何在子句IN处传递参数? [英] How to Pass Parameter Where Clause IN?
问题描述
我在VB.NET网站上传递WHERE子句中的参数时遇到问题
我在下面有一个函数:
I facing Problem on pass the Parameter on WHERE Clause IN On VB.NET site
I have a Function below:
Public Function getProjectDS(ByVal ProjectID As String) As DataSet
Dim cmd As New SqlCommand
cmd.Connection = con
cmd.CommandText = "SELECT * FROM Project WHERE ProjectID IN (@ProjectID)"
cmd.Parameters.Add("@ProjectID", SqlDbType.VarChar).Value = ProjectID
Dim ds As New DataSet
Dim da As New SqlDataAdapter(cmd)
da.Fill(ds)
Return ds
End Function
我喜欢在MSSQL Query中获得如下列表Project Detail:
I like to get list Project Detail as in MSSQL Query as below:
SELECT * FROM Project WHERE ProjectID IN ('PFP','PSB','PSK')
如果我使用Function getProject("PFP,PSK,PSB")
,则无法获得与MSSQL Query相同的结果.
一无所获.
但是,如果我使用Function getProject("PFP"),它只会让我在ProjectID PFP详细信息上进行项目.
我需要帮助在VB.net上的WHERE CLAUSE中传递参数.Site
I can not get same result as MSSQL Query if i use Function getProject("PFP,PSK,PSB")
just get nothing.
But if i use Function getProject("PFP") it only get me Project On ProjectID PFP Details.
I needed to help on Passing parameter ON WHERE CLAUSE IN On VB.net Site
推荐答案
您不能这样做.您实际发送到SQL Server的内容是这样的:
You can''t do that. What you actually sent to the SQL server was this:
SELECT * FROM Project WHERE ProjectID IN ("''PFP'', ''PSB'', ''PSK''")
您没有发送项目列表,而是发送了一个字符串.本质上与发送
相同
You didn''t send a list of items, you sent a single string. Essentially the same as sending
... WHERE ProjectID IN (''I SENT THIS SINGLE, STRING NOT A LIST'')
您不能在IN子句中直接将列表发送到SQL Server.阅读此 [
You can''t directly send a list to SQL Server in the IN clause. Read this[^] for a possible alternate method.
这篇关于如何在子句IN处传递参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!