以前经常用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( ) 取消更新.
新闻热点
疑难解答