c# - AddWithValue 方法 (C#) 什么都不做

标签 c# sql ado.net

我目前正在编写一个类来处理我的应用程序中的所有数据库事件,因此我找到了执行更新查询的方法。

截至目前,我正在返回并显示命令文本的内容以进行检查,看起来不错:

UPDATE news SET title = @title, newsContent = @newsContent, excerpt = @excerpt, date = @date, urlTitle = @urlTitle, isPublished = @isPublished WHERE (id = @id);

所以,换句话说,很好。下一步是用实际值替换所有@values——这就是我遇到问题的地方。什么都没发生。 AddWithValue 方法似乎什么也没做,我发现没有理由这样做。

public string updateQuery(string table, string[] fields, object[] values, string conditionField, object conditionValue)
{
    try
    {
        StringBuilder cmd = new StringBuilder("UPDATE " + table + " SET ");

        int i = 1;
        foreach (string s in fields)
        {
            if (i == fields.Length)
            {
                cmd.Append(s + " = @" + s + " ");
            }
            else
            {
                cmd.Append(s + " = @" + s + ", ");
            }

            i++;
        }

        cmd.Append("WHERE (" + conditionField + " = @" + conditionField + ");");
        command.CommandText = cmd.ToString();

        int j = 0;
        foreach (object o in values)
        {
            command.Parameters.AddWithValue("@" + fields[j], o);
            j++;
        }
        command.Parameters.AddWithValue("@" + conditionField, conditionValue);

        command.ExecuteNonQuery();
        connection.Close();

        return command.CommandText;
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

有人吗?

最佳答案

“它什么都不做”是什么意思?您的意思是执行命令时参数没有值吗?或者命令文本保持不变?

如果是后者,那么这是意料之中的。该命令不会更改查询文本,它会将查询文本与参数值一起发送到服务器。

关于c# - AddWithValue 方法 (C#) 什么都不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/440999/

相关文章:

MySQL内部查询的查询缓存

sql - 使用 ADO .NET 调用 SQL 函数

sql-server - SqlDataReader 关闭和 SqlConnection

c# - 如何为用户的每个新值将列表项格式化为不同的表行

sql - 如何在sql中使用带有select top的max函数

java - 引入命名参数会破坏 jOOQ 查询

c# - 如何将具有反斜杠的连接字符串传递给 SqlConnection?

c# - 为什么 Action.Method.IsStatic 对于某些 lambda 表达式在 Visual Studio 2013 和 2015 之间不同

c# - .NET List<T>.Sort 使用 introsort,为什么最坏的情况是 O(n^2)?

c# - 求和在空列表上失败