最大的網站源碼資源下載站,
以前經常用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() 取消更新。
新聞熱點
疑難解答