技巧随记:数据集更新函数
数据集合DataSet某些内容如果发生改变,怎么反映到数据库哪,并且同时更新已经发生改变的部分?我们都知道把数据集合DataSet里面的内容绑定DataGrid控件,如果进行数据的插入,删除,更新等操作,是不是每次改变都需要把改变的结果反馈给数据库哪?显然不是很好的办法,效率不高哦。怎么办?
可以实现数据库的一次读取到数据集合中,到处使用数据集合,即一次读取,到处使用 :)))
数据集合需要声名为:private static DataSet dt;
//数据操作类
Access oledb = new Access();
在页面第一次加载的时候:
if( !this.IsPostBack )
{
dt = oledb.BindData( "Select * From digest Order By did Desc","digest" );
BindTheGrid();
}
其中函数:BindTheGrid()作用为绑定数据列表控件,具体代码:
//绑定表格
private void BindTheGrid()
{
rssDataGrid.DataSource = dt.Tables[ 0 ].DefaultView;
rssDataGrid.DataBind();
}
这样在添加,或者更新,或者删除数据只是在当前数据集合中进行操作,放置一个按钮,其.Text属性为“保存所有改动”,这样提交数据集合,一次完成对数据库的更新:
如果使用Application 保存数据集合也是不错想法,好像不适合访问量小的站点
可以实现数据库的一次读取到数据集合中,到处使用数据集合,即一次读取,到处使用 :)))
数据集合需要声名为:private static DataSet dt;
//数据操作类
Access oledb = new Access();
在页面第一次加载的时候:
if( !this.IsPostBack )
{
dt = oledb.BindData( "Select * From digest Order By did Desc","digest" );
BindTheGrid();
}
其中函数:BindTheGrid()作用为绑定数据列表控件,具体代码:
//绑定表格
private void BindTheGrid()
{
rssDataGrid.DataSource = dt.Tables[ 0 ].DefaultView;
rssDataGrid.DataBind();
}
这样在添加,或者更新,或者删除数据只是在当前数据集合中进行操作,放置一个按钮,其.Text属性为“保存所有改动”,这样提交数据集合,一次完成对数据库的更新:
private void saveAllSetingBtn_Click(object sender, System.EventArgs e)
{
try
{
oledb.UpdateDataSet( dt, "digest", "Select * From digest" );
Response.Write( "<script>alert('更新成功!请返回!')</script>" );
}
catch
{
Response.Write( "<script>alert('更新失败!请检查您的输入!')</script>" );
}
}
其数据操作类的相应数据集合更新函数是这样写的:{
try
{
oledb.UpdateDataSet( dt, "digest", "Select * From digest" );
Response.Write( "<script>alert('更新成功!请返回!')</script>" );
}
catch
{
Response.Write( "<script>alert('更新失败!请检查您的输入!')</script>" );
}
}
/// <summary>
/// 更新绑定的数据库里的表格
/// </summary>
/// <param name="ds">要更新的DataSet参数</param>
/// <param name="tableName">DataSet里面响应的表格名,对应着数据库里面的表</param>
/// <returns></returns>
public DataSet UpdateDataSet( DataSet ds, string tableName, string handleString )
{
OleDbCommand oc = ReturnOleDbCommand( handleString );
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = oc;
OleDbCommandBuilder builder = new OleDbCommandBuilder( adapter );
adapter.Update( ds, tableName );
oc.Connection.Close();
ds.AcceptChanges();
return ds;
}
这样就完成了对数据集合的更新,前后,数据库只是访问了两次而已。/// 更新绑定的数据库里的表格
/// </summary>
/// <param name="ds">要更新的DataSet参数</param>
/// <param name="tableName">DataSet里面响应的表格名,对应着数据库里面的表</param>
/// <returns></returns>
public DataSet UpdateDataSet( DataSet ds, string tableName, string handleString )
{
OleDbCommand oc = ReturnOleDbCommand( handleString );
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = oc;
OleDbCommandBuilder builder = new OleDbCommandBuilder( adapter );
adapter.Update( ds, tableName );
oc.Connection.Close();
ds.AcceptChanges();
return ds;
}
如果使用Application 保存数据集合也是不错想法,好像不适合访问量小的站点