C#增删改查操作Access数据库之四(数据库的更改)

来源:互联网 发布:免费外贸客户搜索软件 编辑:程序博客网 时间:2024/06/05 08:15

功能:直接在datagirdview中更改数据,点击更新后将更改后的数据更新到数据库中

另外的:在我刚开始想要实现更新功能的时候,我会觉得更新和添加是一样的操作,于是上网查找了一下他们的区别。

You cannot UPDATE a row that's not in a table.

You cannot INSERT a row that's already in a table.

这两句话很具体地说明了区别。

更新是在已存在的数据基础上更新,而添加是添加数据库中不存在的内容。

代码引用自http://blog.csdn.net/gradonday/article/details/38238555

1.数据更新操作

        public bool DataUpdate(DataGridView dataGridView1,OleDbConnection conn)        {            DialogResult dr = MessageBox.Show("确定要更改吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);            if (dr == DialogResult.Yes)            {                string sqlUpdate = "select * from Student";                OleDbDataAdapter adapter = new OleDbDataAdapter(sqlUpdate, conn);                DataTable dtUpdate = new DataTable();                dtUpdate = CreateDatatble(sqlUpdate, conn); //Create a Datatable                dtUpdate.Rows.Clear();                DataTable dtShow = new DataTable();                dtShow = (DataTable)dataGridView1.DataSource;                for (int i = 0; i < dtShow.Rows.Count; i++)                {                    dtUpdate.ImportRow(dtShow.Rows[i]);  //copy data from datagridview to dtUpdate                }                try                {                    conn.Open();                    OleDbCommandBuilder cmdBuilder = new OleDbCommandBuilder(adapter);                    adapter.Update(dtUpdate);  //update database                    conn.Close();                }                catch (Exception ex)                {                    MessageBox.Show(ex.Message.ToString());                    return false;                }                dtUpdate.AcceptChanges();  //submit update            }                return true;               }
这里相当于引入了两个DataTable变量,一个用于保存当前datagirview中的所有数据,另一个用于更新数据库中的数据

2.创建DataSet方法

        public DataTable CreateDatatble(string strsql, OleDbConnection conn)        {            conn.Open();            OleDbDataAdapter adapter = new OleDbDataAdapter(strsql, conn);            DataTable dtSelect = new DataTable();            int rnt = adapter.Fill(dtSelect);  //fill dtSelect            conn.Close();            return dtSelect;        }

3.更新按钮中的操作

        private void btn_Update_Click(object sender, EventArgs e)        {            //OleDbConnection conn = opera.GetConnection();            try            {                bool UpdateResult = opera.DataUpdate(dataGridView1, conn);                if (UpdateResult)                {                    DataDisplay();                    MessageBox.Show("Update successfully!");                }            }            catch (Exception ex)            {                MessageBox.Show(ex.ToString());            }        }

这样更新数据有一个问题,就是相对于利用sql语句来更新,它更费内存一些。可能数据量达到某种程度的时候,执行起来会非常慢,而且如果在更新中数据有丢失情况那么更新后,原来数据库也没有被保存了。利用sql语句更新数据库的问题就是,只能一个数据一个数据的更新,每更改一个数就需要单击更新按钮,这样也是非常麻烦的。

不知道有没有大神能够解决这个问题,欢迎一块学习讨论~~


阅读全文
1 0
原创粉丝点击