我有int [] id,我想创建一个sql语句,我必须获取user_id in(int [])的用户的所有详细信息。我正在使用预准备语句,所以请帮助我。< / p>
SELECT * FROM userrequest WHERE USER_ID IN ?
现在问题是在参数中设置了什么。没有什么是pstmt.setintarray。
答案 0 :(得分:0)
一种解决方案(不使用动态sql,假设你正在使用MSSQL SERVER):
假设您发送了一个CSV字符串值:
'1,2,3,4'
你可以这样做:
SELECT * FROM userrequest WHERE USER_ID IN (SELECT Element from dbo.FN_Split('1,2,3,4',','))
FN_Split在哪里:
CREATE FUNCTION [dbo].[FN_Split]
(
@InDelimitedString varchar(max),
@InDelimiter varchar(10)
)
RETURNS
@tblArray TABLE
(
ElementID smallint IDENTITY(1,1),
Element varchar(1000)
)
AS
BEGIN
DECLARE @StrPos smallint,
@StrStart smallint,
@DelimiterLength smallint
SET @DelimiterLength = LEN(@InDelimiter)
--loop through source string and add elements to destination table array
WHILE LEN(@InDelimitedString) > 0
BEGIN
SET @StrPos = CHARINDEX (@InDelimiter, @InDelimitedString)
IF @StrPos = 0
BEGIN
INSERT INTO @tblArray VALUES(@InDelimitedString)
BREAK
END
ELSE
BEGIN
INSERT INTO @tblArray VALUES(SUBSTRING(@InDelimitedString, 1,@StrPos - 1))
SET @StrStart = @StrPos + @DelimiterLength
-- Shift source string left
SET @InDelimitedString = SUBSTRING(@InDelimitedString, @StrStart , LEN(@InDelimitedString) - @StrStart + 1)
END
END
RETURN
END