我正在开发 Windows 应用程序 (Windows CE),我需要将 ID 数组发送到存储过程(存储在 SQL Server 2012 中)。
我正在研究 .net compact framework 3.5 和 C#。
我检查了将列表作为 XML 属性和表值参数传递的方法,但在紧凑型框架中都给我同样的错误。
无效的枚举类型 SqlDbType.XML 无效的枚举类型 SqlDbType.Structured
Havent 发现任何说这些在紧凑框架中不受支持但它们也不起作用的东西。
我还可以采用什么其他方法。
最佳答案
如果您只需要传递 ID,那么也许这个函数可以帮助您:
ALTER FUNCTION [dbo].[fn_SplitIds]
(
@text nvarchar(max)
)
RETURNS @Ids TABLE
(
Id int UNIQUE
)
AS
BEGIN
declare @iStart int,
@iPos int
if substring( @text, 1, 1 ) = ','
begin
set @iStart = 2
insert into @Ids
values( null )
end
else
set @iStart = 1
while 1=1
begin
set @iPos = charindex( ',', @text, @iStart )
if @iPos = 0
set @iPos = len( @text )+1
if @iPos - @iStart > 0
insert into @Ids
values ( cast(substring( @text, @iStart, @iPos-@iStart ) as int))
else
insert into @Ids
values( null )
set @iStart = @iPos+1
if @iStart > len( @text )
break
end
RETURN
END
我们在我们的项目中使用它来支持一些遗留的东西并且它工作正常。只需传递以逗号“,”分隔的整数。
您不需要创建函数。
关于c# - 将值数组传递给 .net 紧凑框架中的 SQL 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17023757/