将数组从js(jQuery)发送到sql sproc的最佳方法是什么? arrays之间传输的数组

arrays之间传输的数组。

将数组从js(jQuery)发送到sql sproc的最佳方法是什么? 你能分享一下你的想法吗?

这概括了我以前的问题:

  1. Js到MVC控制器。

    https://stackoverflow.com/a/9109671/1145224

  2. 将数组从MVC发送到SQL的最佳方法。 (仍然可供讨论)

  3. 这个有趣的SQLpost用于测试。 那么[表值参数]怎么样?

    http://www.adathedev.co.uk/2010/02/sql-server-2008-table-valued-parameters.html

我认为最好的方法是将数组作为表值参数发送

如何从MVC(任何c#代码)将数组传递给SP。 在你的情况下,它是一个int[]数组,对吗?

 public static DataTable ConvertIntArrayToDataTable(IEnumerable 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; } 

您还必须实现用户定义的表类型

 CREATE TYPE IntArray AS TABLE ( Value int not null ) 

创建接受此参数的过程:

 CREATE PROCEDURE YourProc @DataArray IntArray READONLY AS BEGIN SELECT Value FROM @DataArray END 

最后用适当的参数调用proc:

 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(); }