ADO.net學習記錄 (一) (轉)

gugu99發表於2007-08-16
ADO.net學習記錄 (一) (轉)[@more@]

 資料的規範化:是把資料儘可能的分解到多個表上,最小化重複相同資料的次數。
 
 的主要元素:
 
 資料來源:通常指的是一個關係,如server等
 託管的資料供應:提供資料倉儲通訊的功能 如OC等
 Connection物件:建立一個頁面程式與資料庫的通訊管道
 Command物件:一個包含讀寫資料指令的工具
 DataReader/DataSet物件:已讀出或寫入資料的地方
 .Net:主要指<:datagrid>

 Connection物件:主要用於連線資料來源
 透過Open()方法開啟連線字串中的連線
 連線字串包含3各部分的資訊:
 >> 第一部分指定要使用的供應程式或驅動程式的種類 //server=localhost
 >> 第二部分指定要使用的資料庫  //database=Mydatabase 
 >> 第三部分通常包含資訊,包括名,密碼等 //uid=foolboy;pwd=Mypasswd
 
 Command物件和DataReader:讀取和修改資料
 Command用法:
 objCommand = new OleDbCommand(strSQL,objConnection);
 objDbDataReader = objCommand.ExecuteReader();
 DataReader:儲存資料
 讀取方法 DataReader["FIELD"]
 
 資料繫結:
 是在資料來源和資料使用者建立一個連線的過程。
 主要是指繫結到DataGrid上
 DataReader的侷限:
 >> 只能讀取資料,不能修改資料
 >> 只能向前迴圈資料
 >> 只能處理一個表的資料
 DataSet是他的替代品還是DataTable??他們的主要區別?
 
 
 DataSet和DataTable物件
 DataSet表示資料庫中的資料,與DataReader不同它可以儲存幾個表和他們之間的關係。
 在使用表示主要要用到下面4各物件:
 >> DataTable: 表示表本身
 >> DataSet: 核心物件,建立多表之間的adhoc關係,可以一表中的一行和另一表的一行關聯起來
 >> DataAdapter: 用於結果從Connection傳給Dataset。Fill()方法把資料複製到DataSet中, Update()方法把DataSet中的資料烤回資料來源。
 >> DataView: 表示DataSet中儲存的DataTables的特定檢視
 >> DataGrid: 等的Data最終只繫結到某具體DataView上
 
 ADO.net關於的物件
 sqlConnection
 sqlCommand
 sqlDataAdapter

 資料異常處理

 常見問題:
 >> 程式碼包含對不存在的ADO.NET物件的引用
 >> 程式碼請求的資料為NULL不存在
 >> 程式碼的連線字串錯誤
 >> 包含不存在的列或表的引用
 >> 沒有提供正確的UserID和Pass
 >> 程式碼是用語法不正確的SQl語句
 >> 問題導致資料庫連線問題
 
  處理方法:
 利用 try ....catch  捕獲錯誤資訊

 資料方法

 問題:
  >> 如何更新?我們的修改都是基於斷開連線的,如果將修改後的結果寫入資料庫中?
  >> 如何處理同步更新?兩個人先後對更新了同一資料,怎麼辦?結果會被覆蓋麼?

 DataSet & DataTable & DataRow關係如下所示:
  --------------------------------------
 |  DataSet  |
 |  |-------------------------|  |
 |  |  DataTable  |  |
 |  |  |  |
   |  |  |----------------| |  |
 |  |  |  DataRow  | |  |
 |  |  |----------------| |  |
 |  |  |  DataRow  | |  |
 |  |  |----------------| |  |
  |  |-------------------------|  |
 |------------------------------------|
 
 DataTable = DataSet.Tables["TName"];
 DataRow = DataTable.Rows;
 string strFirstName = DataRow[0]["FirstName"];

 這裡的更新的實質都是對資料集DataSet的更新方法,沒有涉及到對資料來源的更新
 更新操作思路:
 1.新增記錄 (新增行)
 新增記錄首先需要宣告兩個變數 DataTable ,DataRow
 其中DataTable需要例項化到具體的資料集中的某個table
 DataRow = DataTable.NewRow()  宣告為Table的新Row
 再對DataRow進行賦值,DataTable.Rows.Add(DataRow)即可
 2.修改紀錄 (編輯行)
 首先宣告一個變數 DataRow[] objRows用來儲存要編輯的行
 objRows = DataTable.("查詢條件");
 如果是一行,可以這樣 objRows = DataTable.Rows[3];
 再對其進行修改 如 objRows[0][FIELD1]=""  objRows[0][FIELD2]=""
 3.刪除紀錄
 如下 DataTable.Rows[5].Delete();
 推想:應該可以這樣,首先申明一個變數 DataRow[] objRows 用來儲存要刪除的行
 objRows = DataTable.Select("查詢條件");
 


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