将数组从js(jQuery)发送到sql sproc的最佳方法是什么? arrays之间传输的数组
arrays之间传输的数组。
将数组从js(jQuery)发送到sql sproc的最佳方法是什么? 你能分享一下你的想法吗?
这概括了我以前的问题:
-
Js到MVC控制器。
https://stackoverflow.com/a/9109671/1145224
-
将数组从MVC发送到SQL的最佳方法。 (仍然可供讨论)
-
这个有趣的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(); }