iThome online | iThome Blog | iThome周刊訂閱

載入中...

netqna

IT邦初學者
10級

ADO.NET 觀念與實作篇(1)(OneNet魔力小子)
標籤:asp.net 程式 sql

[url http://www.dotblogs.com.tw/netqna/]ADO.NET 觀念與實作篇-如何將DataSet裡的DataTable複製一份到另一個DataSet



收到書籤:發佈到twitter      
分享時間:2008-10-22 01:30:15

▼ ADVERTISEMENT ▼

分享內容(
6

完整篇幅-> http://www.dotblogs.com.tw/netqna/
在ADO.NET 的物件架構模型中,分為兩大部分,一是 DataProvide 資料提供者,二是DataSet(離線環境),DataSet 資料集是一種存在記憶體裡的物件,您可以把它當作記憶體的關聯式資料庫來處理,DataSet資料集架構裡大致包含Tables、Relations、ExtendedProperties,Tables就是在關聯式資料庫的資料表集合體,Relations 記錄著Table與Table之間的關連性,如父/子資料表,ExtendedProperties您可以在其中放置自訂資訊,如用來產生結果集的 SELECT 陳述式,或產生資料的時間,架構圖如以下


而今天的主體將是要說明如果將一個DataSet資料集(再強調一次,把它當作記憶體裡的一個資料庫)的DataTable(資料庫裡的Table),複製到另外一個DataSet的Table裡,在Sql server的T-SQL的寫法我們通常可以利用如下語法:
SELECT *
INTO DatabaseB.schema.tableB
FROM DatabaseA.schema.tableA

但今天我們將利用一個類別成員DataTableReader,在ADO.NET實作 Table 在 Dataset與 DataSet 之間如何有效率運作機制…

首先建立一個Windows Form的專案,Form的設計畫面大致如下,兩個按鈕Button和兩個DataGirdView和兩個DataSet資料集,第一個button(btnFirTable)是載入DataSet1裡的Table到DataGridVIew1,另外一個button(btnCpTble)是複製第一個button產生的Table到另外一個Dataset2裡畫面設計圖如下:



接下來在第一個Button(btnFirTable)的click寫下以下程式碼:




view plaincopy to clipboardprint?
private void btnFirTable_Click(object sender, EventArgs e)
{
//建立連線物件
SqlConnection conn;
conn = new SqlConnection("Data Source=localhost;integrated security=sspi;Initial Catalog=AdventureWorks");

SqlDataAdapter sda=new SqlDataAdapter("select * from Sales.Customer",conn);

//將資料填入 資料集 dataSet1
sda.Fill(dataSet1, "table");

//將資料結果繫結至DataGridView1
dataGridView1.DataSource = dataSet1.Tables["table"];

//釋放物件
conn.Close();
sda.Dispose();

}
private void btnFirTable_Click(object sender, EventArgs e)
{
//建立連線物件
SqlConnection conn;
conn = new SqlConnection("Data Source=localhost;integrated security=sspi;Initial Catalog=AdventureWorks");

SqlDataAdapter sda=new SqlDataAdapter("select * from Sales.Customer",conn);

//將資料填入 資料集 dataSet1
sda.Fill(dataSet1, "table");

//將資料結果繫結至DataGridView1
dataGridView1.DataSource = dataSet1.Tables["table"];

//釋放物件
conn.Close();
sda.Dispose();

}
執行結果圖


接下來也是主要的關鍵語法,在第二個Button(btnCpTble),撰寫下列語法:




view plaincopy to clipboardprint?
private void btnCpTble_Click(object sender, EventArgs e)
{
System.Data.DataTableReader drt = dataSet1.CreateDataReader();

dataSet2.Load(drt, LoadOption.OverwriteChanges, "table1");

dataGridView2.DataSource = dataSet2.Tables["table1"];

}
private void btnCpTble_Click(object sender, EventArgs e)
{
System.Data.DataTableReader drt = dataSet1.CreateDataReader();

dataSet2.Load(drt, LoadOption.OverwriteChanges, "table1");

dataGridView2.DataSource = dataSet2.Tables["table1"];

}

按下第二個Button(btnCpTble),執行結果如下圖:


整個過程就完成實作table在兩個dataset之間複製與移動…



在應用程式開發領域中,將近有七成以上都跟資料庫有關係,而微軟的開發平台策略上,.NET技術架構中,ADO.NET 就是將所有跟資料處理相關的功能封裝成一個類別庫,因此如果可以將ADO.NET核心觀念與實作掌握住,甚至更可以把微軟的主要資料庫SQL SERVER的技術研究徹底,哪麼您可以稱為一個微軟技術專家了。

參考資料:OneNet魔力小子

ADO.NET 觀念與實作篇(1)(OneNet魔力小子)

目前沒有資料

回應

請填寫您的回應,長度限為1,000個字,回應不計點數,也不限使用次數



 

檢舉違規

違規事項:

*補充檢舉理由(可省略),字數不可超過100字

推薦

推薦理由:


*給回答者的鼓勵(可不填),字數不可超過100字

▼ ADVERTISEMENT ▼

熱門標籤

 ccna代考   cisco   crystal   exchange   iscsi   it   java   javascript   linux   m-power   mail   msnlib   msnp15   msnsdk   msn機器人   mysql   nas   oracle   outlook   pmi   pmp   report   sap   server   smartquery   sql   vista   vpn   web   windows   xp   二三事   倍力   倍力資訊   免費軟體   國際專案管理師   報表   專案管理   有話大聲說   活動   省錢   網路   網路儲存   網路管理   網頁設計   資安   資訊安全   防毒軟體   2003   2008