小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

ADO.net學(xué)習(xí)記錄 (一)...

 wheroy 2009-08-24

ADO.net學(xué)習(xí)記錄 (一)


 日期:2006-8-5 14:11:00     [Host01.Com]   訪問:     [全屏查看全文]

 數(shù)據(jù)的規(guī)范化:是把數(shù)據(jù)盡可能的分解到多個表上,最小化重復(fù)相同數(shù)據(jù)的次數(shù)。
 
 ADO.net的主要對象元素:
 
 數(shù)據(jù)源:通常指的是一個關(guān)系數(shù)據(jù)庫,如SQLserver等
 托管的數(shù)據(jù)供應(yīng)程序:提供數(shù)據(jù)倉庫通信的功能 如ODBC等
 Connection對象:建立一個頁面程序與數(shù)據(jù)庫驅(qū)動的通信管道
 Command對象:一個包含讀寫數(shù)據(jù)指令的工具
 DataReader/DataSet對象:存儲已讀出或?qū)懭霐?shù)據(jù)的地方
 .Net控件:主要指<asp:datagrid>

 Connection對象:主要用于連接數(shù)據(jù)源
 通過Open()方法打開連接字符串中的連接
 連接字符串包含3各部分的信息:
 >> 第一部分指定要使用的供應(yīng)程序或驅(qū)動程序的種類 //server=localhost
 >> 第二部分指定要使用的數(shù)據(jù)庫     //database=Mydatabase 
 >> 第三部分通常包含安全信息,包括用戶名,密碼等 //uid=foolboy;pwd=Mypasswd
 
 Command對象和DataReader:讀取和修改數(shù)據(jù)
 Command用法:
 objCommand = new OleDbCommand(strSQL,objConnection);
 objDbDataReader = objCommand.ExecuteReader();
 DataReader:存儲數(shù)據(jù)
 讀取方法 DataReader["FIELD"]
 
 數(shù)據(jù)綁定:
 是在數(shù)據(jù)源和數(shù)據(jù)使用者創(chuàng)建一個連接的過程。
  主要是指綁定到DataGrid上
 DataReader的局限:
 >> 只能讀取數(shù)據(jù),不能修改數(shù)據(jù)
 >> 只能向前循環(huán)數(shù)據(jù)
 >> 只能處理一個表的數(shù)據(jù)
 DataSet是他的替代品還是DataTable??他們的主要區(qū)別?
 
 
 DataSet和DataTable對象
 DataSet表示數(shù)據(jù)庫中的數(shù)據(jù),與DataReader不同它可以存儲幾個表和他們之間的關(guān)系。
 在使用表示主要要用到下面4各對象:
 >> DataTable: 表示表本身
 >> DataSet: 核心對象,建立多表之間的adhoc關(guān)系,可以一表中的一行和另一表的一行關(guān)聯(lián)起來
 >> DataAdapter: 用于結(jié)果從Connection傳給Dataset。Fill()方法把數(shù)據(jù)拷貝到DataSet中, Update()方法把DataSet中的數(shù)據(jù)烤回數(shù)據(jù)源。
 >> DataView: 表示DataSet中存儲的DataTables的特定視圖
 >> DataGrid: 等的DataSource最終只綁定到某具體DataView上
 
 ADO.net關(guān)于SQL Server的對象
 sqlConnection
 sqlCommand
 sqlDataAdapter

 數(shù)據(jù)異常處理

 常見問題:
 >> 代碼包含對不存在的ADO.NET對象的引用
 >> 代碼請求的數(shù)據(jù)為NULL不存在
 >> 代碼的連接字符串錯誤
 >> 包含不存在的列或表的引用
 >> 沒有提供正確的UserID和Password
 >> 代碼是用語法不正確的SQl語句
 >> 網(wǎng)絡(luò)問題導(dǎo)致數(shù)據(jù)庫連接問題
 
        處理方法:
  利用 try ....catch  捕獲錯誤信息

 更新數(shù)據(jù)方法

 問題:
  >> 如何更新?我們的修改都是基于斷開連接的,如果將修改后的結(jié)果寫入數(shù)據(jù)庫中?
  >> 如何處理同步更新?兩個人先后對更新了同一數(shù)據(jù),怎么辦?結(jié)果會被覆蓋么?

 DataSet & DataTable & DataRow關(guān)系如下所示:
        --------------------------------------
 |            DataSet                 |
 |      |-------------------------|   |
 |      |     DataTable           |   |
 |      |                         |   |
   |      |      |----------------| |   |
 |      |      |    DataRow     | |   |
 |      |      |----------------| |   |
 |      |      |    DataRow     | |   |
 |      |      |----------------| |   |
        |      |-------------------------|   |
 |------------------------------------|
                          
 DataTable = DataSet.Tables["TName"];
 DataRow = DataTable.Rows;
 string strFirstName = DataRow[0]["FirstName"];

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

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多