ASP.NET資料庫使用精典—–讀取資料庫中資料

來源:互聯網
上載者:User


 

讀取資料庫中的資料

在ASP.NET中,讀取資料庫中的資料可以使用datareader 和dataset兩種方法,兩者差異如下:

使用dataset對象讀取資料大致需要以下五個步驟:

(1)建立資料庫連結,可以選用sqlconnection或者oledbconnection

(2)將查詢儲存在sqldataadapter或者oledbdataadapter對象中

(3)使用dataadapter對象的fill方法將資料填充到dataset中的datatable中

(4)為datatable對象建立dataview對象以顯示資料,這一步可以省略。

(5)將dataview或者dataset綁定到server control上。

使用datareader讀取資料大致需要以下六個步驟:

(1)建立資料庫連結,可以選用sqlconnection或者oledbconnection

(2)使用connection對象的OPEN方法開啟資料庫連結

(3)將查詢儲存在sqlcommand或者oledbcommand對象中

(4)調用command對象的executereader方法,將資料讀入datareader對象中

(5)調用datareader的READ或者GET方法讀取一筆資料,以便顯示

(6)調用connection對象的close方法,關閉資料庫連結

1 用datareader讀取資料

  前面我們已經學會了建立資料庫連結和開啟資料庫,但是執行sql指令及開啟表則必須依賴command對象,使用command對象執行sql指令的程式大致如下:

 dim cmd as oledbcommand  '聲明一個command對象

' 建立command對象,並且指定SQL語句

 response.write(server.mappath("user.mdb"))

 cmd=new oledbcommand("select * from reg " , comm)

 dim rd as oledbdatareader   '聲明一個datareader對象

 rd=cmd.executereader() '執行SQL指令,並將其結果設定給datareader

 在建立command對象的語句中,conn參數為一個connection,第一個參數為SQL的指令。

 command對象在執行SQL指令時需要調用executereader方法,executereader方法會把SQL指令的返回結果賦給datareader對象

 下面使用datareader對象來讀取資料庫中的資料:

  dim i as integer

  while rd.read()

    response.write("<ul>")

    for i=0 to rd.fieldcount-1

       response.write("<li>" & rd.getname(i) & "=" & rd.item(i))

    next

    response.write("</ul>")

  end while

  Getitem(index)方法用於擷取欄位名,item(index)用於擷取欄位值。

使用datareader對象需要注意以下屬性:

  ● read方法,讀取單行資料,若讀取成功,會將所讀取的單行資料存放在datareader對象中,然後自動將光榮榜標移到下一行資料,返回true,如果讀取失敗,返回false,據此可以使用while語句判斷是否已經讀取到資料庫的最後一條記錄。此外值得注意的是datareader對象讀取完一條資料記錄後會自動將游標移到下一條記錄,不需要使用move next語句。這是ADO.NET和ADO比較大的區別。

  ●fieldcount屬性工作表示datareader對象中記錄的列數,值得注意的是item屬性的索引值是從0開始的,所以最大的索引值是fieldcount-1

2 使用dataset讀取資料

  datareader對象只能一行一行讀取資料記錄,如果對資料進行大規模處理時使用datareader就有些捉襟見肘了,它的優點是節省記憶體,使用dataset對象最大優點就是能同時將整個表讀入記憶體,所以最適合進行資料繫結。如使用datagrid控制項來顯示資料時,使用dataset讀取資料是最好的選擇。但它的最大缺點是比較消耗記憶體

(1)使用dataadapter和dataset

使用dataset對象一般需要和dataadapter對象聯合使用

將一個表填入dataset對象

  dim conn as oledbconnection '聲明一個oledbconnection對象

  conn=new oledbconnection()  '建立一個oledbconnection對象

  '設定連結字串connectionstring

  conn.connectionstring="provider=microsoft.jet.oledb.4.0;" & " data source=" & "server.mappath("user.mdb")

  conn.open()

  '建立dataadapter對象,並指定SQL語句

   da=new oledbdataadapter("select * from reg" ,conn)

   dim ds as dataset '聲明一個dataset對象

   da.fill(ds,"註冊使用者表") ' 在dataset對象中註冊一個名為“註冊使用者表”的資料表

(2)用datatable操作資料

  在瞭解了dataset對象和datatable對象的關係以後,下面將使用datatable來操作資料

  如果想藉助datatable對象來讀取表的內容,必須使用以下兩種屬性: 

  ● columns屬性,資料列資訊,此屬性為datacolumn對象構成的集合對象

  ● rows屬性  資料行資訊,此屬性為datarow對象所構成的集合對象

  如果使用迴圈來讀取所有資料,就可以達到使用datareader對象讀取資料的效果,代碼大致如下:

  for i=0 to dt.rows.count-1

    response.write("<ul>")

    for j=0 to dt.columns.count-1

       str="<li>" &dt.columns(j).caption

       str=str & "=" dt.rows(i).item(j)

       response.write(str)

    next

    response.write("</ul>")

  next

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.