?? ado.net學習記錄 (一).txt
字號:
ADO.net學習記錄 (一)
作者: xjtufb 發表時間: 2003-7-31 11:18:32
--------------------------------------------------------------------------------
數據的規范化:是把數據盡可能的分解到多個表上,最小化重復相同數據的次數。
ADO.net的主要對象元素:
數據源:通常指的是一個關系數據庫,如SQLserver等
托管的數據供應程序:提供數據倉庫通信的功能 如ODBC等
Connection對象:建立一個頁面程序與數據庫驅動的通信管道
Command對象:一個包含讀寫數據指令的工具
DataReader/DataSet對象:存儲已讀出或寫入數據的地方
.Net控件:主要指<asp: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: 等的DataSource最終只綁定到某具體DataView上
ADO.net關于SQL Server的對象
sqlConnection
sqlCommand
sqlDataAdapter
數據異常處理
常見問題:
>> 代碼包含對不存在的ADO.NET對象的引用
>> 代碼請求的數據為NULL不存在
>> 代碼的連接字符串錯誤
>> 包含不存在的列或表的引用
>> 沒有提供正確的UserID和Password
>> 代碼是用語法不正確的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.Select("查詢條件");
如果是一行,可以這樣 objRows = DataTable.Rows[3];
再對其進行修改 如 objRows[0][FIELD1]="" objRows[0][FIELD2]=""
3.刪除紀錄
如下 DataTable.Rows[5].Delete();
推想:應該可以這樣,首先申明一個變量 DataRow[] objRows 用來存儲要刪除的行
objRows = DataTable.Select("查詢條件");
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -