ADO.net學習記錄 (一) (轉)
資料的規範化:是把資料儘可能的分解到多個表上,最小化重複相同資料的次數。
的主要元素:
資料來源:通常指的是一個關係,如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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Flutter學習記錄(一)Dart學習FlutterDart
- Vue 學習記錄一Vue
- rust 學習記錄(一)Rust
- Java openrasp學習記錄(一)Java
- JavaScript Promise 學習記錄(一)JavaScriptPromise
- MySQL鞏固學習記錄(一)MySql
- Laravel restful API 學習記錄一LaravelRESTAPI
- JS繼續學習記錄(一)JS
- 大一暑假學習記錄(2)
- 大一暑假學習記錄(三)
- 大一暑假學習記錄6
- 學習記錄
- 【每日學習記錄】使用錄影裝置記錄每天的學習
- PE學習筆記(一) (轉)筆記
- [Bootstrap 5 學習記錄](一)搭建框架boot框架
- 記錄一下藍芽學習藍芽
- 記錄學習PromisePromise
- windbg學習記錄
- Eureka學習記錄
- Mybatis學習記錄MyBatis
- socket學習記錄
- JQuery學習記錄jQuery
- larabbs 學習記錄
- Tableau學習記錄
- MySQL學習記錄MySql
- Elasticsearch學習記錄Elasticsearch
- swift學習記錄Swift
- jQuery 學習記錄jQuery
- RAC 學習記錄
- RMAN學習記錄
- RAC學習記錄
- activiti學習記錄
- 學習記錄APPAPP
- langchain學習記錄LangChain
- JAVA學習記錄Java
- Docker學習記錄Docker
- lftp學習備記錄--轉摘於網上FTP
- 【記錄】MySQL 學習筆記MySql筆記