【问题标题】:Writing Sql Update method编写Sql Update方法
【发布时间】:2014-04-03 10:07:05
【问题描述】:
public static int SQLUpdate(string sql, string[] names, object[] values)
{
        if (names.Length != values.Length)
        {
            throw new ArgumentException("name/value mismatch");
        }

        using (var sqlconn = new SqlConnection(GetConnectionString))
        {
            sqlconn.Open();

            using (var cmd = new SqlCommand(sql, sqlconn))
            {
                for (int i = 0; i < names.Length; i++)
                {
                    cmd.Parameters.AddWithValue(names[i], values[i]);
                }

                return cmd.ExecuteNonQuery();
            }
        }

我编写了创建Update 命令的方法。

例如,我的 SQL Server 数据库中有一个 Picture 表,其中包含 PictureID, UserID 列。

用户可以一次添加 3 张图片。你看valuesarray

但在我的示例中,value[i] 也是 array。 (3 张图片)。

我怎样才能为此写我的SQLUpdate method

【问题讨论】:

  • 为什么不对每个(names[i];values[i,j])执行命令
  • @MikkaRin OP 说 values[i] 是一个数组
  • @Bharadwaj OP 是 user3461906。不是我。
  • @Bharadwaj ,我的代码保存数据,没有问题,只是我需要改进它

标签: c# sql sql-server methods


【解决方案1】:

我想你差不多了,只是我会稍微改变一下你的代码:

sqlconn.Open();
    for (int i = 0; i < names.Length; i++)
     {
        using (var cmd = new SqlCommand(sql, sqlconn))
        {
            cmd.Parameters.AddWithValue(names[i], values[i]);

            return cmd.ExecuteNonQuery();
        }
     }

**因为您每次都在声明一个新的 SQLCommand,您可能需要每次都执行 cmd.Close() 和 cmd.Dispose()。

【讨论】:

  • 正如我所说的一切正常。我需要 values[i] 也是数组的方法。
  • 从你给我们的代码 values[] 是一个数组,假设你的名字和值是按关系顺序输入的,那么我会做得很好,因为 names[0] 将与 value[0 ].
【解决方案2】:

我认为你需要在 SQL 过程中传递数据表

http://www.codeproject.com/Tips/214492/Passing-a-datatable-to-a-stored-procedure-in-Sql-S 

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-14
  • 2020-10-31
  • 2011-06-26
  • 2013-12-08
相关资源
最近更新 更多