ASP快速开发方法之数据操作2007-10-30这是我自己的心得,给大家作个参考。我的目的是让开发变得简单,尽可能少地考虑实现语句,更多地把精力用于思考业务逻辑。希望我的文章对大家有所启发和帮助。好吧,让我们进入正题:先看以下例子:<% db_path = "database/cnbruce.mdb" Set conn= Server.CreateObject("ADODB.Connection") connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath(db_path) conn.Open connstr Set rs = Server.CreateObject ("ADODB.Recordset") = "Select * from cnarticle" rs.Open sql,conn,1,1 if rs.EOF and rs.BOF then response.write ("暂时还没有文章") else Do Until rs.EOF response.write("文章标题是:"& rs("cn_title")) response.write("<br>文章作者是:"& rs("cn_author")) response.write("<br>文章加入时间是:"& rs("cn_time")) response.write("<br>文章内容是:"& rs("cn_content")) response.write("<hr>") rs.MoveNext Loop end if rs.close Set rs = Nothing conn.close set conn=Nothing %>嗯,这是一个典型的读取数据并显示的例子,参见:http://www.cnbruce.com/blog/showlog.asp?cat_id=26&log_id=448 嗯,确实简单。从上至下,很容易明白。但是当你对多个表进行读插删改的时候,当你的代码里有很多HTMLjs混杂的时候,你会有疑问:为什么有这么多东西要重复呢? 所以一般我们把一些简单的操作独立出来,写成类或者函数放进包含文件(include)。那么以上的操作我们可以使用两个文件来实现:conn.asp <% db_path = "database/cnbruce.mdb" Set conn= Server.CreateObject("ADODB.Connection") connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath(db_path) conn.Open connstr %>showit.asp <!--#include file="conn.asp" --> <% Set rs = Server.CreateObject ("ADODB.Recordset") sql = "Select * from cnarticle" rs.Open sql,conn,1,1 if rs.EOF and rs.BOF then response.write ("暂时还没有文章") else Do Until rs.EOF response.write("文章标题是:"& rs("cn_title")) response.write("<br>文章作者是:"& rs("cn_author")) response.write("<br>文章加入时间是:"& rs("cn_time")) response.write("<br>文章内容是:"& rs("cn_content")) response.write("<hr>") rs.MoveNext Loop end if rs.close Set rs = Nothing conn.close set conn=Nothing %>参考:http://www.cnbruce.com/blog/showlog.asp?cat_id=26&log_id=448现在相对简单多了,如果有多个操作页面我们只要导入连接文件就可以了,不过还是不够简洁,哪里不简洁? 一直在创建server,一直在写close,这样很容易出错,并且看起来与内容无关的太多。那我再改进下: 把conn.asp文件改成: <% Dim Conn Dim Rs Sub CloseDatabase Conn.close Set Conn = Nothing End Sub Sub OpenDatabase Dim StrServer,StrUid,StrSaPwd,StrDbName StrServer="192.168.1.1" "数据库服务器名 StrUid="sa" "您的登录帐号 StrSaPwd="" "您的登录密码 StrDbName="cnbruce.mdb" "您的数据库名称 Set Conn = Server.CreateObject("ADODB.Connection") "用于连接ACCESS Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath(StrDbName) "用于连接MSSQL "Conn.ConnectionString = "Driver={sql server};driver={SQL server};server="&StrServer&";uid="&StrUid&";pwd="&StrSaPwd&";database= "&StrDbName set rs=server.CreateObject("ADODB.RecordSet") conn.open if Err Then err.Clear Set Conn = Nothing GBL_CHK_TempStr = GBL_CHK_TempStr & "数据库连接错误!" Response.Write GBL_CHK_TempStr Response.End End If End Sub %>现在我们的showit.asp可以这样写:showit.asp <!--#include file="conn.asp" --> <% sql = "Select * from cnarticle" opendatabase rs.Open sql,conn,1,1 If not Rs.eof then Do Until rs.EOF response.write("文章标题是:"& rs("cn_title")) response.write("<br>文章作者是:"& rs("cn_author")) response.write("<br>文章加入时间是:"& rs("cn_time")) response.write("<br>文章内容是:"& rs("cn_content")) response.write("<hr>") rs.MoveNext Loop else response.write ("暂时还没有文章") end if Closedatabase %>嗯,我们又少写了一些东西,这样是最简单的吗?当然不是!还可以更简单。 使用GetRows把查询出来的数据传给一个变量,使用ubound方法取得数据记录条数。 不明白?没关系,让我们继续往下看:再建个文件:sql.aspsql.asp <% Class DataTable public Function SelectData(sql) If sql<>"" then opendatabase Rs.open sql,conn,1,1 If not Rs.eof then Thedata=Rs.GetRows(-1) Closedatabase Else Closedatabase End If End If SelectData=Thedata End Function End Class %>