【发布时间】:2015-06-02 10:44:14
【问题描述】:
我正在使用以下代码将 datagridview 绑定到 SQL Server 数据库
POSfinalEntities dbe = new POSfinalEntities();
BindingSource bs = new BindingSource();
dataProducts.DataSource = null;
bs.DataSource = dbe.Book.ToList();
dataProducts.DataSource = bs;
它工作正常。如果我尝试更新数据库,数据库本身会更新得很好。问题是datagridview。它没有显示更改。我已经尝试了几个小时只是为了让它工作但失败了。
我尝试设置 datasource = null 并再次将其设置为 datasource = bs。 我试过this.datagridview.refresh,不行。
我找不到可行的解决方案。如果这是一个重复的问题,我很抱歉,但我尝试了我可以在这个网站上找到的所有解决方案。如果是重复的。您能否至少提供一个指向有效解决方案的链接。我真的很绝望。谢谢。
更新:这是我用来更新数据库值的代码。我知道,串联是不好的做法,但这不是问题。
private void btneUpdate_Click(object sender, EventArgs e)
{
if (MessageBox.Show("You are about to save the changes. You won't be able to undo those changes.", "Update fields", MessageBoxButtons.OKCancel) == DialogResult.OK)
{
eprice = Convert.ToString(numericUpDown3.Value);
estock = Convert.ToString(numericUpDown4.Value);
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
+ "', GenreID = '" + cmbeCategory.SelectedValue
+ "' WHERE ISBN = '" + txteISBN.Text + "';", con);
cmd.ExecuteNonQuery();
con.Close();
}
}
【问题讨论】:
-
如何更新数据库?你能展示你的代码行吗?
-
SQL Injection alert - 您应该不将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入
标签: c# sql-server database winforms