我应该使用CSV字符串,XML字符串还是......?
答案 0 :(得分:2)
哪个数据库和版本?使用SQL Server 2008,您可以使用表值参数。 2005年,不是那么多。
答案 1 :(得分:2)
这实际上取决于您使用的是哪个数据库。
MS SQL 2005将XML数据类型引入Microsoft平台。 Oracle9i引入了XMLTYPE。 MySql还具有诸如ExtractValue和UpdateXML之类的XML函数。 MS SQL 2008具有表值参数,允许您以表格格式传递数据。
问题实际上归结为您希望如何使用这些值。你是把它们分开存放在一张桌子里还是想存放整个blob?
如果撕开并且只有几个值,我建议使用常规字符串解析或表值参数。否则做XML。
请记住,SQL(无论风格如何)并不适合字符串解析。因此,如果你走这条路,你可以在数据库中创建一个帮助函数(CLR,UDF等)来为你处理它。
答案 2 :(得分:0)
我通常使用CSV字符串,因此我不会超过varchar字段的最大长度。为此目的,XML似乎有点罗嗦。
答案 3 :(得分:0)
有这样的特定API ...在Java中,您可以使用对象准备语句并指定数据库类型,JDBC将处理转换。 无论如何,这是特定于供应商的。 我不建议使用任何一种建议的技术,因为它们“隐藏”具有危险副作用的参数类型。
答案 4 :(得分:0)
在2005/2000中,我们必须创建一个Xml字符串,并使用Xml Parser(2005)解析它或者在2000年滚动我们。不是很好,但它完成了工作。
<ArrayOfGuid><Guid></Guid></ArrayOfGuid>
答案 5 :(得分:0)
每当我必须将数组发送到sproc时,我通常会后退并考虑“为什么?”。通常我能够将一些其他标准发送到sproc,这将允许sproc生成正确的结果而无需数组。
有些情况下,我最终必须传递数组,在这些情况下,我发现传递xml在mssql中工作正常。