jquery - 将数组从 js (jQuery) 发送到 sql 存储过程的最佳方法是什么?阵列层间传输

标签 jquery asp.net-mvc-3 sql-server-2008

阵列在层之间传输。

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

这概括了我之前的问题:

  1. J 到 MVC Controller 。

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

  2. 将数组从 MVC 发送到 SQL 的最佳方式。 (仍有待讨论)

  3. 还有这篇有趣的 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/

相关文章:

asp.net-mvc - MVC 中的打印页面功能

asp.net-mvc-3 - ASP.Net MVC 3 Razor 连接字符串

asp.net-mvc - MVC DropDownList SelectedValue无法正确显示

jquery - 手动验证我的表单

JavaScript style.background-color

jquery - 在容器内调整图像大小?

sql - 如何在 SQL Server 2008 R2 单选查询中将行转换为列

php - 使用 Sqlsrv 驱动程序从存储过程中获取数据

sql-server-2008 - 防止多行出现竞争条件

jquery - 各种 jQuery 模态窗口插件的优缺点?