ADO.NET對象的詳解

1. Connection 類
和數據庫交互,必須鏈接它。鏈接幫助指明數據庫服務器、數據庫名字、用戶名、密碼,和鏈接數據庫所須要的其它參數。Connection對象會被Command對象使用,這樣就可以知道是在哪一個數據源上面執行命令。 
屬性:
CommandTimeout
這義了使用 Execute 方法運行一條 SQL 命令的最長時限,可以中斷併產生錯誤。默認值爲30秒,設定爲0表示沒有限制
ConnectionString
設定鏈接數據源的信息,包括 FlieName、Password、Userld、DataSource、Provider 等參數。
ConnectionTimeout
設置在終止嘗試和產生錯誤前創建數據庫鏈接期間所等待的時間,該屬性設置或返回指示等待鏈接打開的時間的長整型值(單位爲秒),默認值爲15。若是將該屬性設置爲0,ADO 將無限等待直到鏈接打開。
DefaultDatabase
定義鏈接默認數據庫
Mode
創建鏈接以前,設定鏈接的讀寫方式,決定是否可更改目前數據。0 一 不設定(默認)、1 一 只讀、2 一 只寫、3 一 讀寫。
State
讀取當前連接對象的狀態,取0表示關閉,1表示打開。
 
方法:
Open
打開一個數據庫鏈接
ChangeDatabase
改變當前鏈接的數據庫。須要一個有效的數據庫名稱
Close
關閉數據庫鏈接。使用該方法關閉一個打開的鏈接
CreateCommand
建立並返回一個與該鏈接關聯的SqlCommand對象
Dispose
釋放資源
 
實例:
 //建立鏈接數據庫的字符串
        string SqlStr = "Server=MRWXK\\MRWXK;User Id=sa;Pwd=;DataBase=db_ASPNET";
        //建立SqlConnection對象
        SqlConnection con = new SqlConnection(SqlStr);
        con.Open();//打開數據庫的鏈接
        if (con.State == System.Data.ConnectionState.Open)
        {
            Response.Write("SQL Server數據庫鏈接開啓!<p/>");
            //關閉數據庫的鏈接
            con.Close();
        }
        if(con.State==System.Data.ConnectionState.Closed)
        {
            Response.Write("SQL Server數據庫鏈接關閉!<p/>");
        }

2. Command對象 
成 功與數據創建鏈接後,就能夠用Command對象來執行查詢、修改、插入、刪除等命令;Command對象經常使用的方法有ExecuteReader()方 法、ExecuteScalar()方法和ExecuteNonQuery()方法;插入數據可用ExecuteNonQuery()方法來執行插入命 令。
屬性:

Connectionsql

指定Command對象所使用的Connection對象。數據庫

CommandType數組

指定Command對象的類型,有3種選擇:緩存

1 Text:表示Command對象用於執行SQL語句。服務器

2 StoredProcedure:表示Command對象用於執行存儲過程。架構

3 TableDirect:表示Command對象用於直接處理某個表。ide

CommandType屬性的默認值爲Text。性能

CommandTextspa

根據CommandType屬性的取值來決定CommandText屬性的取值,分爲3種狀況對象

1 若是CommandType屬性取值爲Text,則CommandText屬性指出SQL語句的內容。

2 若是CommandType屬性取值爲StoredProcedure,則CommandText屬性指出存儲過程的名稱。

3 若是CommandType屬性取值爲TableDirect,則CommandText屬性指出表的名稱。

CommandText屬性的默認值爲SQL語句。

CommandTimeout

指定Command對象用於執行命令的最長延遲時間,以秒爲單位,若是在指定時間內仍不能開始執行命令,則返回失敗信息。

默認值爲30秒。

Parameters

指定一個參數集合。

方法:

ExecuteReader

執行查詢操做,返回一個具備多行多列的結果集。

ExecuteScalar

執行查詢操做,返回單個值。這個方法一般用來執行那些用到count()或者sum的命令。

ExecuteNonQuery

執行插入、修改或刪除操做,返回本次操做受影響的行數。

3. DataReader類
許多數據操做要求開發人員只是讀取一串數據。DataReader對象容許開發人員得到從Command對象的SELECT語句獲得的結果。考慮性能的因素,從DataReader返回的數據都是快速的且只是「向前」的數據流。這意味着開發人員只能按照必定的順序從數據流中取出數據。這對於速度來講是有好處的,可是若是開發人員須要操做數據,更好的辦法是使用DataSet。
屬性:

Depth

設置閱讀器濃度。對於SqlDataReader類,它老是返回0

FieldCount

獲取當前行的列數

Item

索引器屬性,以原始格式得到一列的值

IsClose

得到一個代表數據閱讀器有沒有關閉的一個值

RecordsAffected

獲取執行SQL語句所更改、添加或刪除的行數

方法:

Read

使DataReader對象前進到下一條記錄(若是有)

Close

關閉DataReader對象。注意,關閉閱讀器對象並不會自動關閉底層鏈接

Get

用來讀取數據集的當前行的某一列的數據數據

NextResult

當讀取批處理 SQL 語句的結果時,使數據讀取器前進到下一個結果

實例:
//鏈接字符串 
string strSQL = "SELECT SName,SClass from Student where SNum='" + DropDownList1.SelectedValue + "'";
        SqlCommand oCmd;//鏈接數據庫命令
        SqlDataReader oDR = null;
        oCmd = new SqlCommand();
        StudentDA.GetBDConnection();
        oCmd.Connection = StudentDA.aConnection;
        oCmd.Connection.Open();
        oCmd.CommandText = strSQL;
        oDR = oCmd.ExecuteReader();
        while (oDR.Read())
        {
            txtSName.Text = oDR["SName"].ToString();
            txtClass.Text = oDR["SClass"].ToString();
        }
        StudentDA.CloseSqlDataReader(oDR);
        StudentDA.CloseConnection();
4. DataAdapter類
某些時候開發人員使用的數據主要是隻讀的,而且開發人員不多須要將其改變至底層的數據源。一樣一些狀況要求在內存中緩存數據,以此來減小並不改變的數據被數 據庫調用的次數。DataAdapter經過斷開模型來幫助開發人員方便的完成對以上狀況的處理。當在一單批次的對數據庫的讀寫操做的持續的改變返回至數 據庫的時候,DataAdapter填充(fill)DataSet對象。DataAadapter包含對鏈接對象以及當對數據庫進行讀取或者寫入的時候 自動的打開或者關閉鏈接的引用。另外,DataAdapter包含對數據的SELECT、INSERT、UPDATE和DELETE操做的 Command 對象引用。開發人員將爲DataSet中的每個Table都定義DataAadapter,它將爲開發人員照顧全部與數據庫的鏈接。因此開發人員將作的工做是告訴DataAdapter何時裝載或者寫入到數據庫。
它的主要成員是DataSet和DataTable,其餘成員能夠簡單理解成這兩個類的組成類。下面主要介紹DataSet和DataTable。
屬性:

DeleteCommand

獲取或者設置用於在數據源中刪除記錄的命令

InsertCommand

獲取或設置用於將新紀錄插入到數據源中的命令

SelectCommand

獲取或者設置用於在數據源中選擇記錄的命令

UpdateCommand

獲取或者設置用於在數據源中更新記錄的命令
方法:

Dispose

刪除該對象

Fill

用從源數據讀取的數據行填充至DataSet對象中

FillSchema

將一個DataTable加入到指定的DataSet中,並配置表的模式

GetFillParameters

返回一個用於SELECT命令的DataParameter對象組成的數組

Update

在DataSet對象中的數據有所改動後更新數據源。

實例:(本例主要是綁定到Gridview上)
 string sqlstr = "select TNum,TName,TSex,TBirth,TProf,TEdu,TRemark,TStatus,TPassword from Teacher";
        SqlConnection sqlcon = new SqlConnection(StudentDA.conStr);
        SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
        DataSet myds = new DataSet();
        sqlcon.Open();
        myda.Fill(myds, "Teacher");
        GridView1.DataSource = myds;
        GridView1.DataBind();
        StudentDA.CloseConnection();
 
6. DataSet對象
DataSet 對象是數據在內存中的表示形式。它包括多個DataTable對象,而DataTable包含列和行,就象一個普通的數據庫中的表。開發人員甚至可以定義 表之間的關係來建立主從關係。DataSet是在特定的場景下使用,幫助管理內存中的數據並支持對數據的斷開操做的。DataSet是被全部DataProviders使用的對象,所以它並不像Data Provider同樣須要特別的前綴。
屬性:
Tables
數據集中包含的數據表的集合。

Ralations

數據集中包含的數據聯繫的集合。
DataSetName
用於獲取或設置當前數據集的名稱
HasErrors 用於判斷當前數據集中是否存在錯誤
方法:
Clear

清除數據集包含的全部表中的數據,但不清除表結構。

Clone

複製DataSet的結構,包括全部的DataTable架構關係和約束。不復制任何數據。

Copy

複製DataSet的結構和數據

AcceptChanges

提自加載此DataSet或上次調用以來對其進行的修改
 
7. DataTable類
DataTable與數據庫中的table很類似,你幾乎徹底能夠按照數據庫中的table來理解DataTable,包括行和列等等。反正你就按照table來理解它就對了。最後,簡單說一下這些對喜好對象之間的關係。Connection 對象提供數據來源的鏈接。Command 對象可以讓開發人員存取操做數據庫的命令,以便傳回數據、修改數據、執行預存程序 (Stored Procedure),而且傳送參數信息。DataReader則可提供來自數據來源的高效能數據流。最後,DataAdapter會提供 DataSet 對象與數據來源之間的橋接器 (Bridge)。DataAdapter 會使用 Command 對象,在數據來源處執行 SQL 命令,以便將數據載入 DataSet,而且也能將 DataSet 內的數據變動更新到數據庫。
相關文章
相關標籤/搜索