• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • ADO.NET存取數據庫

    發表于:2007-06-30來源:作者:點擊數: 標簽:
    以下是本CSDN社區的Michael_Jackson(麥克爾★杰克遜)的貼子(刪除了C#部分),放這里我想對大家更有用! 可以使用 ADO.NET DataReader 從 數據庫 中檢索只讀、只進的數據流。因為每次在內存中始終只有一行,所以使用 DataReader 可提高應用程序的 性能 并減少
    以下是本CSDN社區的Michael_Jackson(麥克爾★杰克遜)的貼子(刪除了C#部分),放這里我想對大家更有用!

    可以使用 ADO.NET DataReader 從數據庫中檢索只讀、只進的數據流。因為每次在內存中始終只有一行,所以使用 DataReader 可提高應用程序的性能并減少系統開銷。

    當創建 Command 對象的實例后,可調用 Command.ExecuteReader 從數據源中檢索行,從而創建一個 DataReader,如以下示例所示。

    [Visual Basic]
    Dim myReader As SqlDataReader = myCommand.ExecuteReader()

    使用 DataReader 對象的 Read 方法可從查詢結果中獲取行。通過向 DataReader 傳遞列的名稱或序號引用,可以訪問返回行的每一列。不過,為了實現最佳性能,DataReader 提供了一系列方法,它們將使您能夠訪問其本機數據類型(GetDateTime、GetDouble、GetGuid、GetInt32 等)形式的列值。有關類型化訪問器方法的列表,請參閱 OleDbDataReader 類和 SqlDataReader 類。如果在基礎數據類型未知時使用類型化訪問器方法,將減少在檢索列值時所需的類型轉換量。

    以下代碼示例循環訪問一個 DataReader 對象,并從每個行中返回兩個列。

    [Visual Basic]
    Do While myReader.Read()
    Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", myReader.GetInt32(0), myReader.GetString(1))
    Loop
    myReader.Close()

    DataReader 提供未緩沖的數據流,該數據流使過程邏輯可以有效地按順序處理從數據源中返回的結果。由于數據不在內存中緩存,所以在檢索大量數據時,DataReader 是一種適合的選擇。

    關閉 DataReader
    每次使用完 DataReader 對象后都應調用 Close 方法。

    如果 Command 包含輸出參數或返回值,那么在 DataReader 關閉之前,將無法訪問這些輸出參數或返回值。

    請注意,當 DataReader 打開時,該 DataReader 將以獨占方式使用 Connection。在初始 DataReader 關閉之前,將無法對 Connection 執行任何命令(包括創建另一個 DataReader)。

    多個結果集
    如果返回的是多個結果集,DataReader 會提供 NextResult 方法來按順序循環訪問這些結果集,如以下代碼示例所示。

    [Visual Basic]
    Dim myCMD As SqlCommand = New SqlCommand("SELECT CategoryID, CategoryName FROM Categories;" & _
    "SELECT EmployeeID, LastName FROM Employees", nwindConn)
    nwindConn.Open()

    Dim myReader As SqlDataReader = myCMD.ExecuteReader()

    Dim fNextResult As Boolean = True
    Do Until Not fNextResult
    Console.WriteLine(vbTab & myReader.GetName(0) & vbTab & myReader.GetName(1))

    Do While myReader.Read()
    Console.WriteLine(vbTab & myReader.GetInt32(0) & vbTab & myReader.GetString(1))
    Loop

    fNextResult = myReader.NextResult()
    Loop

    myReader.Close()
    nwindConn.Close()

    從 DataReader 中獲取架構信息
    當 DataReader 打開時,可以使用 GetSchemaTable 方法檢索有關當前結果集的架構信息。GetSchemaTable 將返回一個填充了行和列的 DataTable 對象,這些行和列包含當前結果集的架構信息。對于結果集的每一列,DataTable 都將包含一行。架構表行的每一列都映射到在結果集中返回的列的屬性,其中 ColumnName 是屬性的名稱,而列的值為屬性的值。以下代碼示例為 DataReader 寫出架構信息。

    [Visual Basic]
    Dim schemaTable As DataTable = myReader.GetSchemaTable()

    Dim myRow As DataRow
    Dim myCol As DataColumn

    For Each myRow In schemaTable.Rows
    For Each myCol In schemaTable.Columns
    Console.WriteLine(myCol.ColumnName & " = " & myRow(myCol).ToString())
    Next
    Console.WriteLine()
    Next

    OLE DB 章節
    分層行集或章節(OLE DB 類型 DBTYPE_HCHAPTER、ADO 類型 adChapter)可以使用 OleDbDataReader 來檢索。當以 DataReader 的形式返回包含某章節的查詢時,該章節將以此 DataReader 中列的形式返回,并公開為 DataReader 對象。

    ADO.NET DataSet 也可用于通過表間的父子關系來表示分層行集。有關的更多信息,請參閱創建和使用 DataSet。

    以下代碼示例使用 MSDataShape 提供程序來為客戶列表中的每個客戶生成訂單的章節列。

    [Visual Basic]
    Dim nwindConn As OleDbConnection = New OleDbConnection("Provider=MSDataShape;Data Provider=SQLOLEDB;" & _
    "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind")

    Dim custCMD As OleDbCommand = New OleDbCommand("SHAPE {SELECT CustomerID, CompanyName FROM Customers} " & _
    " APPEND ({SELECT CustomerID, OrderID FROM Orders} AS CustomerOrders " & _
    " RELATE CustomerID TO CustomerID)", nwindConn)
    nwindConn.Open()

    Dim custReader As OleDbDataReader = custCMD.ExecuteReader()
    Dim orderReader As OleDbDataReader

    Do While custReader.Read()
    Console.WriteLine("Orders for " & custReader.GetString(1)) @# custReader.GetString(1) = CompanyName

    orderReader = custReader.GetValue(2) @# custReader.GetValue(2) = Orders chapter as DataReader

    Do While orderReader.Read()
    Console.WriteLine(vbTab & orderReader.GetInt32(1)) @# orderReader.GetInt32(1) = OrderID
    Loop
    orderReader.Close()
    Loop

    custReader.Close()
    nwindConn.Close()



    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>