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()方法來執行插入命 令。
屬性:

Connection

指定Command對象所使用的Connection對象。

CommandType

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

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

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

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

CommandType屬性的默認值為Text。

CommandText

根據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 內的數據變更更新到數據庫。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM