使用DataSet更新数据库的方法

时间:2021-05-02

以前经常用sql语句(update)更新数据库,有使用用起来不是很方便,特别是数据量比较大的情况下(比如数据表)很麻烦~~后来感觉用DataSet更新数据库是不错的选择.于是急着写了一个用DataSet更新数据库的类如下:(后面有使用说明,总结)

using System; using System.Data; using System.Data.SqlClient; using System.Windows.Forms; namespace winApplication { public class sqlAccess { //与SQL Server的连接字符串设置 private string _connString; private string _strSql; private SqlCommandBuilder sqlCmdBuilder; private DataSet ds = new DataSet( ); private SqlDataAdapter da; public sqlAccess( string connString, string strSql ) { this._connString=connString; } private SqlConnection GetConn( ) { try{ SqlConnection Connection = new SqlConnection( this._connString );Connection.Open( ); return Connection;} catch ( Exception ex ){ MessageBox.Show( ex.Message,"数据库连接失败" ); throw; } } //根据输入的SQL语句检索数据库数据 public DataSet SelectDb( string strSql, string strTableName ) { try { this._strSql = strSql; this.da = new SqlDataAdapter( this._strSql, this.GetConn( ) ); this.ds.Clear( ); this.da.Fill( ds,strTableName ); return ds; //返回填充了数据的DataSet,其中数据表以strTableName给出的字符串命名 } catch ( Exception ex ){ MessageBox.Show( ex.Message,"数据库操作失败" ); throw; } } //数据库数据更新( 传DataSet和DataTable的对象 ) public DataSet UpdateDs( DataSet changedDs, string tableName ) { try { this.da = new SqlDataAdapter( this._strSql, this.GetConn( ) ); this.sqlCmdBuilder = new SqlCommandBuilder( da ); this.da.Update( changedDs,tableName ); changedDs.AcceptChanges( ); return changedDs; //返回更新了的数据库表 } catch ( Exception ex ) { MessageBox.Show( ex.Message,"数据库更新失败" ); throw; } }

使用说明总结:

1. GetConn方法创建一个数据库连接,返回SqlConnection.

2.使用的selectming令中必须包含主键,这点大家都知道的!

3. this.da.Fill( ds,strTableName ) 填充数据集

4.构造CommandBuilder对象时,将DataAdapter对象作为构造函数参数传入:

this.sqlCmdBuilder = new SqlCommandBuilder( da );

5. 在调用UpdateDs( )更新数据库前,请检查changedDs是否已经被更新过,用

changedDs.[tableName] GetChanges( ) != null;

6.用 this.da.Update( changedDs,tableName )方法更新数据,然后调用changedDs.AcceptChanges( )才能真正的更新数据库,调用 changedDs.RejectChanges( ) 取消更新.

本文源自:翔宇亭——IT乐园(http://),转载请保留此信息!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章