【问题标题】:Problems with update query更新查询的问题
【发布时间】:2011-05-19 16:26:35
【问题描述】:

我无法弄清楚为什么下面的更新查询不执行,任何建议:

 static public void updateSelectedMainNewsImage(int newsID, string filename, string replace)
{
    SqlConnection conn = new SqlConnection(ConnectionString);
    conn.Open();
    SqlCommand updateNews = new SqlCommand("Update newsImages SET [newsImage] =@filename where [newsID] =@newsID AND [newsImage] =@replace", conn);
    updateNews.Parameters.AddWithValue("@newsID",SqlDbType.Int).Value = newsID;
    updateNews.Parameters.AddWithValue("@filename",SqlDbType.VarChar).Value =  filename;
    updateNews.Parameters.AddWithValue("@replace",SqlDbType.VarChar).Value = replace;

    updateNews.ExecuteNonQuery();
    conn.Close();
}

【问题讨论】:

  • 数据库表模式是什么样的?另外,您是否收到错误消息?
  • 不,我没有收到错误,但它没有更新数据库
  • 没有症状,很难说,但我猜newsID 和replace 的值与任何现有行都不匹配。
  • 表名 = newsImages , 列 = imageID(primary Key) , newsID(ForeignKey) , newsImage(string)
  • 您是否尝试过在 SQL Profiler 执行时运行它并查看发送到 SQL Server 的内容?我会这样做,然后尝试在 Mgmt Studio 中执行相同的查询,看看会发生什么。

标签: asp.net sql ado.net sql-update


【解决方案1】:

如果它没有出错,那么它正在工作。没有任何记录符合您的 WHERE 条件。

【讨论】:

  • 同样的查询在 sql server 上运行良好
  • 是的,但是数据肯定不一样 :) 如果你说没有错误,那么更新运行良好,只是找不到要更新的内容
  • 你需要打印出你的查询字符串来看看有什么区别
【解决方案2】:

你正在使用updateNews.Parameters.AddWithValue("@filename",SqlDbType.VarChar).Value = filename;

尝试将其替换为

updateNews.Parameters.AddWithValue("@filename",filename,SqlDbType.VarChar);

这是因为 parameter.addwithvalue 函数不需要设置 value 属性它有一个像上面这样的重载版本。我希望这可以帮助

【讨论】:

    猜你喜欢
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    相关资源
    最近更新 更多