在C#中使用Datagrid更新数据库

刚刚工作的东西需要帮助我再次卡在这里….我正在使用datagrid从数据库中检索值,我想使用类似的数据网格更新数据库但不知怎的我有麻烦,任何人都可以指导我如何做到这一点.. …我的意思是当执行查询时,如果用户想要更新某些内容他/她可以在显示值的数据网格中执行此操作,则检索所选数据….

if (textBox1.Text != ""|| textBox1.Text==null) { textBox3.Enabled = false; dateTimePicker1.Enabled = false; dateTimePicker2.Enabled = false; String txt = textBox1.Text; dataGridView1.DataSource = null; dataGridView1.Rows.Clear(); dataGridView1.Refresh(); OleDbDataAdapter dAdapter = new OleDbDataAdapter("SELECT * FROM [BDetails] WHERE ([BranchCode] = '" + @txt + "')", connParam); OleDbCommandBuilder cBuilder = new OleDbCommandBuilder(dAdapter); dataTable = new DataTable(); DataSet ds = new DataSet(); dAdapter.Fill(dataTable); if (dataTable.Rows.Count > 0) { for (int i = 0; i < dataTable.Rows.Count; i++) { dataGridView1.Rows.Add(dataTable.Rows[i][0], dataTable.Rows[i][1], dataTable.Rows[i][2], dataTable.Rows[i][3], dataTable.Rows[i][4], dataTable.Rows[i][5], dataTable.Rows[i][6], dataTable.Rows[i][7], dataTable.Rows[i][8], dataTable.Rows[i][11], dataTable.Rows[i][12]); } }// end inner if else { MessageBox.Show("No Record Found"); textBox3.Enabled = true; dateTimePicker1.Enabled = true; dateTimePicker2.Enabled = true; }// end inner else }// end outer if else { MessageBox.Show("Please Enter Branch Code"); bookConn.Close(); }// end outer else 

我绝望的家伙帮助我

private void button8_Click(object sender,EventArgs e){ReadData(); // 保存数据();

  }// end function void ReadData() { this.ds = new DataSet(); // string connString = "CONNICTION STRING GOES HERE"; dAdapter = new OleDbDataAdapter("select * from BDetails", connParam); this.dAdapter.Fill(this.ds,"[BDetails]"); this.ds.AcceptChanges(); //set the table as the datasource for the grid in order to show that data in the grid this.dataGridView1.DataSource = ds.DefaultViewManager; }// end function void SaveData() { DataSet changes = this.ds.GetChanges(); if (changes != null) { //Data has changes. //use update method in the adapter. it should update your datasource int updatedRows = this.dAdapter.Update(changes); this.ds.AcceptChanges(); } }// end function 

阿贝尔。 有很多方法可以处理数据,并且很多时候开发人员偏好以这种或那种方式工作。 从你的问题,我可以看到使用ADO.NET可能是新的,所以我建议你做一些关于使用.NET中的数据的阅读(DataTables,DataSet,DataGrids,DataAdapters,Data Binding,…等)

我认为(根据我的简短经验)从数据源读取和写入数据的最简单方法是使用DataAdapter将数据读入数据集,然后将数据集设置为用户可以编辑的gridview的数据源。 要回写更改,只需在适配器中使用update方法。 这是一个示例代码

 DataSet ds; OleDbDataAdapter dataAdapter; void ReadData() { this.ds = new DataSet(); string connString = "CONNICTION STRING GOES HERE"; this.dataAdapter = new OleDbDataAdapter("QUERY GOES HERE", connString); this.dataAdapter.Fill(this.ds, "TABLE1"); this.ds.AcceptChanges(); //set the table as the datasource for the grid in order to show that data in the grid this.dataGridView1.DataSource = ds.DefaultViewManager; } void SaveData() { DataSet changes = this.ds.GetChanges(); if (changes != null) { //Data has changes. //use update method in the adapter. it should update your datasource int updatedRows = this.dataAdapter.Update(changes); this.ds.AcceptChanges(); } } 

请参阅以下内容,因为它提供了有关使用DataGrid控件的更长示例

http://www.codeproject.com/Articles/9986/Using-the-DataGrid-Control

有关DataTable,DataSet和DataGrids的一些介绍,请参阅

http://www.codeproject.com/Articles/6179/A-Practical-Guide-to-NET-DataTables-DataSets-and-D