更新查询不更新数据库中的任何内容
本文关键字:更新 任何内 数据库 查询 | 更新日期: 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 设置为的值是否与数据库中的现有值不同,并确保如果使用"说明"查找/标识数据库中的目标行,则搜索的是原始"说明"值,而不是要将"说明"设置为的新值。