我正在做一个大项目,没有太多时间来解决每个问题,我使用的是 Windows 窗体,尤其是 DataGridView。我刚刚添加了一个可以查询数据库表的数据源。检查启用添加、删除和编辑属性。我通过拖放创建了这个 DataGridView,并添加了一个数据源。运行程序时查询工作正常,表格出现在我的 DataGridView 上,我可以在 DataGridView 上添加、编辑和删除行,但是当我通过 SQL Server Management Studio 查询表格时,表格中的记录仍然存在相同。可能是什么问题呢?
问问题
4675 次
4 回答
0
数据源需要有插入/更新/删除命令才能使网格视图工作,听起来它只有一个选择命令。
于 2012-09-26T16:20:48.270 回答
0
不幸的是,您确实需要专门运行更新命令。
这是一个可能有帮助的链接:http: //msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter.updatecommand.aspx
这里讨论了如何自动保存到 SQL Server,如果相关的话:http: //www.codeproject.com/Articles/12846/Auto-Saving-DataGridView-Rows-to-a-SQL-Server-Data
这是我喜欢 Entity Framework/MVC 的原因之一。非常简单的数据操作:D 如果您有兴趣/有空闲时间,我建议您检查一下。
于 2012-09-26T16:37:04.440 回答
0
如果您在完成表格后使用 dbnavigator,您应该单击 dbnavigator 上的保存按钮,因为添加、编辑和删除不会保存在数据库中,直到您单击 dbnavigator 中的保存按钮。
于 2012-09-26T18:17:42.727 回答
0
我找到了解决方案。我添加了一个名为“保存更改”的按钮。
首先,我做出初步声明:
private SqlDataAdapter da;
private DataTable dt;
private SqlCommandBuilder sqlCommandBuilder = null;
private SqlConnection Con = new SqlConnection(@"Data Source=......");
这是加载填充它的 DataGridView 的代码:
private void DataGridView_Load(object sender, EventArgs e)
{
Con.Open();
da = new SqlDataAdapter(@"SELECT * FROM tbl", Con);
sqlCommandBuilder = new SqlCommandBuilder(da);
dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
Con.Close();
}
这是保存更改按钮的代码:
private void button1_Click(object sender, EventArgs e)
{
SqlCommandBuilder local_SqlCommandBuilder = new SqlCommandBuilder(da);
local_SqlCommandBuilder.ConflictOption = System.Data.ConflictOption.OverwriteChanges;
da.UpdateCommand = local_SqlCommandBuilder.GetUpdateCommand();
da.Update(((System.Data.DataTable)this.dataGridView1.DataSource));
((System.Data.DataTable)this.dataGridView1.DataSource).AcceptChanges();
}
于 2012-09-30T06:14:48.803 回答