簡單實用的DataSet更新資料庫的類+總結(c#)

hljhrbsjf發表於2006-09-06
以前經常用sql語句(update)更新資料庫,有使用用起來不是很方便,特別是資料量比較大的情況下(比如資料表)很麻煩~~後來感覺用DataSet更新資料庫是不錯的選擇.於是急著寫了一個用ataSet更新資料庫的類
如下:(後面有使用說明,總結)

using System;

using System.Data;

using System.Data.SqlClient;

using System..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() 取消更新。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/631872/viewspace-863563/,如需轉載,請註明出處,否則將追究法律責任。

相關文章