我遇到更新查询无效的问题。它不会更新我的数据库中的任何内容。请告诉它为什么不起作用
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();
}
答案 0 :(得分:1)
标题= @标题,说明= @描述其中描述= @描述&#34;
当它已经= @descri
时,您正在设置Description = @descri答案 1 :(得分:0)
取代:
SqlParameter p2 = new SqlParameter("@descri", descri);
我把一些东西与你桌子上的内容相匹配。例如:
SqlParameter p2 = new SqlParameter("@descri", "Something I know is in the table");
然后检查您的标题是否在该行中更新。这将告诉您richTextBox1中的文本是否不正确。另请注意,RichTextBox的格式与常规TextBox不同,后者可能会影响它。
答案 2 :(得分:0)
这很可能是你的问题:
string query = "update diaryDB set Title=@title, Description=@descri where Description=@descri";
您正在指示数据库查找字段Description
等于传入参数@descri
的所有行。但是,您还尝试将字段Description
更新为传入的参数@descri
。这表明您尝试将行中的描述值更改为新值。我怀疑这个新值当前不在你正在操作的表中,因此没有更新。
您可能遇到的另一个问题是您将字段Title
设置为它已经持有的值。
如果您尝试更新通过查找原始值找到的特定行中的description字段,那么您可能应该使用以下内容:
string query = "update diaryDB set Title=@title, Description=@descri where Description=@OriginalDescri";
然后添加第三个参数,该参数保存原始描述值(数据库中字段的当前值)。
因此,请检查您设置标题的值是否与数据库中的现有值不同,并确保您是否使用描述来查找/标识数据库中的目标行,而您正在搜索原始描述值,而不是您要设置描述为的新值。