最大的网站源码资源下载站,
以前经常用sql语句(update)更新数据库,有使用用起来不是很方便,特别是数据量比较大的情况下(比如数据表)很麻烦~~后来感觉用dataset更新数据库是不错的选择.于是急着写了一个用ataset更新数据库的类如下:(后面有使用说明,总结)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.使用的select命令中必须包含主键,这点大家都知道的!
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() 取消更新。
新闻热点
疑难解答