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

时间:2014-12-02 20:02:21

标签: c# sql-server database insert-update

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

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();
}

3 个答案:

答案 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";

然后添加第三个参数,该参数保存原始描述值(数据库中字段的当前值)。

因此,请检查您设置标题的值是否与数据库中的现有值不同,并确保您是否使用描述来查找/标识数据库中的目标行,而您正在搜索原始描述值,而不是您要设置描述为的新值。