日期:2012-06-15  浏览次数:20422 次

关于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>

<%}%>
</table>

其实,用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)的关键。)