更新查询不更新数据库中的任何内容

本文关键字:更新 任何内 数据库 查询 | 更新日期: 2023-09-27 18:33:01

我遇到了更新查询不起作用的问题。它不会更新我数据库中的任何内容。请告诉为什么它不起作用

private void button1_Click(object sender, EventArgs e)
{
    string title = this.textBox1.Text;
    string descri = this.richTextBox1.Text;
    string connstring = 
        @"Data Source=(LocalDB)'v11.0;AttachDbFilename=<path>'Database1.mdf;Integrated Security=True";
    string query = "update diaryDB set Title=@title, Description=@descri where Description=@descri";
    SqlConnection con = new SqlConnection(connstring);
    SqlCommand com = new SqlCommand(query, con);
    SqlParameter p1 = new SqlParameter("@title" , title);
    SqlParameter p2 = new SqlParameter("@descri", descri);
    com.Parameters.Add(p1);
    com.Parameters.Add(p2);
    con.Open();
    com.ExecuteNonQuery();
    con.Close();
}

更新查询不更新数据库中的任何内容

title=@title , description=@descri where Description=@descri">

您正在设置描述 = @descri,而它已经 = @descri

代替:

SqlParameter p2 = new SqlParameter("@descri", descri);

我放了一些与你桌子上的东西相匹配的东西。前任:

SqlParameter p2 = new SqlParameter("@descri", "Something I know is in the table");

然后检查该行中的标题是否已更新。这将告诉您 richTextBox1 中的文本是否正确。还要记住,富文本框的格式与常规文本框不同,这可能会影响它。

这很可能是你的问题:

string query = "update diaryDB set Title=@title, Description=@descri where Description=@descri";

您正在指示数据库查找字段Description等于传入参数 @descri 的所有行。但是,您还尝试将字段Description更新为传入的参数 @descri 。这表明您正在尝试将行中的描述值更改为新值。我怀疑这个新值当前不在您正在操作的表中,因此没有进行任何更新。

您可能遇到的另一个麻烦是您将字段Title设置为它已经持有的值。

如果您尝试更新通过查找原始值找到的特定行中的描述字段,那么您可能应该使用类似以下内容:

string query = "update diaryDB set Title=@title, Description=@descri where Description=@OriginalDescri";

然后添加保存原始说明值(数据库中字段的当前值(的第三个参数。

因此,请检查将 Title 设置为的值是否与数据库中的现有值不同,并确保如果使用"说明"查找/标识数据库中的目标行,则搜索的是原始"说明"值,而不是要将"说明"设置为的新值。