阵列在层之间传输。
将数组从 js (jQuery) 发送到 sql 存储过程的最佳方法是什么? 您能分享一下您的想法吗?
这概括了我之前的问题:
J 到 MVC Controller 。
将数组从 MVC 发送到 SQL 的最佳方式。 (仍有待讨论)
还有这篇有趣的 SQL 测试文章。 [表值参数]怎么样?
http://www.adathedev.co.uk/2010/02/sql-server-2008-table-valued-parameters.html
最佳答案
我认为最好的方法是将数组发送为 Table-Valued Parameter
如何从 MVC(任何 C# 代码)将数组传递到 SP。在你的例子中,它是一个 int[]
数组,对吗?
public static DataTable ConvertIntArrayToDataTable(IEnumerable<int> array, bool AllowNull = false)
{
var dt = new DataTable();
dt.Columns.Add(new DataColumn("Value", typeof(int)) { AllowDBNull = AllowNull });
foreach(var i in array)
dt.Rows.Add(i));
return dt;
}
您还必须实现 User Defined Table Type
CREATE TYPE IntArray AS TABLE
(
Value int not null
)
创建接受此参数的过程:
CREATE PROCEDURE YourProc
@DataArray IntArray READONLY
AS
BEGIN
SELECT Value FROM @DataArray
END
最后使用适当的参数调用过程:
void CallProc(int[] array)
{
// assuming there is exisis already created connection and command named sqlCommand
sqlCommand.CommandText = "YourProc";
sqlCommand.CommandType = CommandType.StoredProcedure;
sqlCommand.Parameters.Clear();
sqlCommand.AddWithValue("@DataArray", ConvertIntArrayToDataTable(array));
sqlCommand.ExecuteNonQuery();
}
关于jquery - 将数组从 js (jQuery) 发送到 sql 存储过程的最佳方法是什么?阵列层间传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9111093/