SQL Server数据库未更新C#
我不熟悉数据库编程和C。我正在使用SQL server数据库并将其连接到我的winforms应用程序。 一切都很好,我可以添加新行,并从数据库中读取信息,但当我尝试编辑值时,它似乎不起作用 这是我正在使用的代码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(@"
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注入。改用参数化查询。