您的位置:首页 > 数据库

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

2017-11-21 14:40 531 查看
功能:直接在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语句更新数据库的问题就是,只能一个数据一个数据的更新,每更改一个数就需要单击更新按钮,这样也是非常麻烦的。

不知道有没有大神能够解决这个问题,欢迎一块学习讨论~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息