關于ADO.NET的一點補充
作者: 孫雯
這幾天比較無聊,猛得想起來還有東西沒有寫完,所以趁著星期六,就又寫了一篇.它的例子是俺和一個我們年級的MM的,嘿嘿,可別笑我,現實中沒有時間泡MM,在這里可要過把隱,哈哈!(臺下,原來SUNWEN是這樣一個人,唉......)
我的先前的教程里有一篇關于ADO+的,就是訪問數據庫的那一篇,出了之后感覺非常地不好,感覺對不起大家了,寫的的確非常地難,例子也選得不好,所以,今天我帶來了一個簡單的從數據庫中讀出數據的東東。 這個數據庫的結構是這樣的:
name age sex other school 茜茜 19 女 美女,愛好廣泛 華中師范大學 孫雯 19 男 不帥,非常喜歡計算機和足球 華中師范大學
好了,讓我們開始吧!下面是源程序(以ASP.NET來作,飛刀原來有一篇,但用的是BIND,這篇不是): <% @ Page Language="C#" %> <% @ Import Namespace="System.Data" %> <% @ Import Namespace="System.Data.ADO" %> <% String connectionString = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=c:/test/test.mdb;"; ADOConnection myConn = new ADOConnection(connectionString);
String cmd="select * from tab"; ADOCommand mycmd=new ADOCommand(cmd,myConn); mycmd.ActiveConnection.Open();
ADODataReader adr=null;
mycmd.Execute(out adr); Response.Write("<table border=2><tr><td align=center>姓名</td><td align=center>年齡</td><td align=center>性別</td><td align=center>備注</td><td align=center>學校</td></tr>"); while(adr.Read()) {%> <tr> <td align="center"> <%=adr["name"].ToString()%> </td> <td align="center"> <%=adr["age"].ToString()%> </td> <td align="center"> <%=adr["sex"].ToString()%> </td> <td align="center"> <%=adr["other"].ToString()%> </td> <td align="center"> <%=adr["school"].ToString()%> </td>
</tr>
<%}%>
其實,用DataSet的功能是最強大的,但是讓我們這些初學者一下接觸它,未免太殘忍了,因為它比原來的RecordSet要復雜地多,我看了一下它的API參考,頭都要昏了(可能是我比較笨)。下面我們來分析一下代碼。我想從Response.Write()后面就不要說了吧,那個很好理解。我的這個主要分三步:
1.建立數據庫連接,這是每個東東都必須的. ADOConnection myConn = new ADOConnection(connectionString);
2.建立一個ADO命令對象,并打開它,是這樣的: ADOCommand mycmd=new ADOCommand(cmd,myConn); mycmd.ActiveConnection.Open();
3.建立一個ADODataReader對象,它的作用就是從數據庫中讀出數據,在JAVA中用的很多,用了它,就不用rs.movenext這樣的方法了,因為它是自動換行的.它每次只讀一行,這是非常地好的,不用像記錄集那樣的東西,一次讀很多,浪費服務器資源.
4.把命令執行的結果讓ADOReader來接收: mycmd.Execute(out adr);
然后,adr就成了一個類似指針的東東,自動執行movenext方法.
這是我的一點貢獻,希望能對大家工作學習帶來幫助!
(飛刀注:孫雯這一篇文章使我們在傳統的WEB編程思維上理解了ASP.Net,但是我個人并不贊同使用<table>和Reader來顯示數據,因為ASP.Net是一種基于軟件編程思想的WEB技術,如果我們還是用老的思想去思考程序,那么ASP.Net的優點將無法展現,使用WEB控件是ASP.Net區別于其它技術(特別是JSP)的關鍵。)
|