我目前正在编写一个类来处理我的应用程序中的所有数据库事件,因此我找到了执行更新查询的方法。
截至目前,我正在返回并显示命令文本的内容以进行检查,看起来不错:
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/