SQL Server数据库未更新C#

SQL Server数据库未更新C#,c#,sql,sql-server,database,C#,Sql,Sql Server,Database,我不熟悉数据库编程和C。我正在使用SQL server数据库并将其连接到我的winforms应用程序。 一切都很好,我可以添加新行,并从数据库中读取信息,但当我尝试编辑值时,它似乎不起作用 这是我正在使用的代码 private void btneUpdate_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection(@"

我不熟悉数据库编程和C。我正在使用SQL server数据库并将其连接到我的winforms应用程序。 一切都很好,我可以添加新行,并从数据库中读取信息,但当我尝试编辑值时,它似乎不起作用

这是我正在使用的代码

         private void btneUpdate_Click(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection(@"
                Data Source = localhost; 
                Initial Catalog = BookStore; 
                Integrated Security = True;");
            SqlCommand cmd;               

            if(MessageBox.Show("You are about to save the changes. You won't be able to undo those changes.", "Update fields", MessageBoxButtons.OKCancel) == DialogResult.Yes)
            {                                      
                con.Open();
                cmd = new SqlCommand(@"UPDATE Book 
                                        SET   BookTitle = '"+ txteTitle.Text
                                        +"', BookAuthorLname = '"+txteAuthorLname.Text
                                        +"', BookAuthorFname = '"+txteAuthorFname.Text
                                        +"', BookPrice = '"+ Convert.ToDecimal(eprice)
                                        +"', BookDescription = '"+txteDesc.Text
                                        +"', DatePublication = '"+dtpePublished.Value.Date
                                        +"', BookStock = '"+ Convert.ToInt32(estock)
                                        +"', isFiction = '"+ checkboxbool
                                        +"', BookCategory = '"+ cmbeCategory.SelectedValue
                                        +"'  WHERE ISBN = '"+ txteISBN.Text +"';", con);
                cmd.ExecuteNonQuery();
                con.Close();                   
            }

            BindEdit();
            BindGrid();
        }

你的这部分线路是错的

..... MessageBoxButtons.OKCancel) == DialogResult.Yes)
您应该检查对话框结果。确定,否则您将永远不会输入更新代码

..... MessageBoxButtons.OKCancel) == DialogResult.OK)

说了这些,请停下来,花点时间学习如何去做。这是编写与数据库交互的代码的唯一正确方法。字符串连接实际上是一种不好的做法,会导致攻击

顺便说一句,没有错误。它似乎有效,但当我检查值时。。没有更改。请运行Sql事件探查器查看实际执行的命令。是否确定ISBN=txteISBN.Text?尝试设置cmd.CommandType=CommandType.Text并执行。使用Sql事件探查器查看正在执行的查询。然后尝试手动执行它,比如在ManagementStudio中,看看它是否会更新某些内容。ISBN可能存在一些问题,因此不符合条件。请记住-不要使用sql命令的串联,因为它会导致sql注入。改用参数化查询。