【问题标题】:Updating Database using Datagrid in C#在 C# 中使用 Datagrid 更新数据库
【发布时间】:2013-06-25 07:57:16
【问题描述】:

刚刚处理最近需要帮助的事情,我再次卡在这里....我正在使用数据网格从数据库中检索值,我想使用类似的数据网格更新数据库,但不知何故我遇到了麻烦,谁能指导我怎么做那.....我的意思是当执行查询并检索所选数据时,如果用户想要更新他/她可以在显示值的数据网格中执行的操作......

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) { 读取数据(); // 保存数据();

    }// 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

【问题讨论】:

    标签: c# database datagrid updating


    【解决方案1】:

    嗯,阿比尔。确实有很多方法可以处理数据,并且在很多时候,开发人员倾向于以一种或另一种方式工作。从您的问题中,我可以看到使用 ADO.NET 可能是新的,所以我建议您阅读一些关于使用 .NET 中的数据(DataTables、DataSets、DataGrids、DataAdapters、Data Binding 等)

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

    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、DataSets 和 DataGrids 的一些介绍,请参阅

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

    【讨论】:

    • 非常感谢帮助了我很多
    • 我尝试将它与我的代码一起使用,但无法检索到任何信息,我的意思是该值只是返回空信息......@ Tha'er
    • 你能澄清更多吗?你说的是哪个值? @AbeerIslam
    • 我已经编辑了我的代码并根据我的要求编写了你的​​方法,但是当我调用它们时,datagrid 只返回空单元格
    猜你喜欢
    • 2013-12-25
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 2020-02-27
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    相关资源
    最近更新 更多