欢迎光临
我们一直在努力

ASP基础讲座(下)

建站超值云服务器,限时71元/月

当我们需要同浏览器交互的时候,有时少不了数据库。因为只有用数据库才可能大量、快速地处理信息。使用asp不仅意味着你可以读取access和sql server的数据库,同时也意味着你可以读取其它odbc(open database connect,开放式数据库互联)兼容的数据库。为了在asp中访问数据库,我们将接触一个新名词——ado(active data object,活动数据对象)。

  ado是一种操作microsoft所支持的数据库的方法,有些类似于以前在vb中听说过的dao(data access object,数据访问对象)和rdo(remote data object,远程数据对象)。在asp中,ado可以看作是一个服务器组件(server component),更简单点说,是一系列的对象,应用这些功能强大的对象,即可轻松完成对数据库复杂的操作。在这里我们所要学的是使用这些对象的方法,具体的操作步骤可以归纳为以下几步:

  (一)创建数据库源名(dsn)

  (二)创建数据库链接(connection)

  (三)创建数据对象

  (四)操作数据库

  (五)关闭数据对象和链接

  下面具体叙述每一步的作法:

  一、创建数据源名

  用odbc时,经常见到dsn这个名词,它究竟是什么,有什么重要作用呢?dsn(date source name)即数据源名称。我们知道,odbc是一种访问数据库的方法,只要系统中有相应的odbc驱动程序,任何程序就可以通过odbc操纵驱动程序的数据库。比如我们系统中有access的odbc驱动程序,那么即使我们没有access软件,也可以在我们的程序(如vb编的)中间对一个access的mdb数据库加、删、改记录。而且我们根本不用知道这个数据库是放在哪里的。我们只要写出sql语句,odbc驱动程序就会帮我们做一切事情。我们在给odbc驱动程序传sql指令时,即是用dsn来告诉它到底操作的是哪一个数据库。如果数据库的平台变了,比如我们改用了sql server的数据库,只要其中表的结构没变,我们就不用改写我们的程序,只要重新在系统中配置dsn就行了。由此可见,dsn是应用程序和数据库之间的桥梁,要通过odbc访问数据库,前提就是我们必须配置好dsn(即架好桥梁)。一个dsn必须包含一些信息:

  dsn的名字:就是给这座桥取个名字,当程序访问数据库时,给系统传的就是这个名字,而不是数据库的实际名称。

  odbc驱动程序类型:只有指出驱动程序类型,在我们操作数据库时,系统才会知道调哪个odbc驱动程序来服务。

  数据库:你必须指定这座桥到底连接的是哪个数据库,但不同的数据库系统,指定数据库名字的方法有些不同。

  这座桥是架在系统之中的,所以win95(nt)提供了一个工具来完成这件事,即是控制面板中的32 bit odbc,共有三类,即用户dsn、系统dsn、文件dsn。我们一般就用系统dsn,因为这样可以让所有在该系统上操作的人都能使用这个dsn。

  打开windows的“控制面板”,找到图标“32位odbc)”(有一些系统上叫“odbc”、“32bit odbc”),双击,出现(如图一)对话框,选中标签“系统dsn”,点击“新建”,选驱动程序为microsoft access mdb,单击“完成”,弹出对话框(如图二),输出“data source name”为“dsn1”,单击“ok”,再单击“选择数据库”,选中你要使用的数据库,例如“c:\b1.mdb”,这样就ok了。以后我们就用“dsn1”来访问数据库“c:\b1.mdb”,而不直接用文件名“c:\b1.mdb”,这样做的好处是,一旦我们改变了文件名或存放地,就不用再一个一个地修改程序中所有该数据库的名称,而只需修改dsn中的配置就可以了。

  二、创数据库链接(connection)

  用过vb的人都知道,dao中有链接(connection),rdo中有odo connection。链接用以保持一些关于正在访问的数据的一些状态信息,以及链接者信息。asp文件中如果要访问数据,必须首先创建与数据库的链接,其语法如下:

  set mconn=server createobject(“adobdconnection”)

  这条语句创建了链接对象mconn,接下来:

  mconn.open “dsn1”,“vsername”,“password”

  这条语句打开链接,用到了dsn,本例为“dsn1”。其后的两个参数分别是访问数据库的用户名和口令,为可选参数。

  注意:必须有以上两个小步骤,因为链接对象的创建与打开是两回事,只有打开了才真正可以用。

  三、创建数据对象(record set)

  ado中的数据对象通常保存的是查询结果。record set是ado中最复杂的对象,有许多属性和方法,灵活运用,可以达到许多好的效果。与dao中的一样,record set保存的是一行行的记录,并标有一个当前记录。以下是创建方法:

  set record set=mconn.execute(sqtstr)

  这条语句创建并打开了对象record set,其中mcon是先前创建的链接对象,sqtstr是一个串,代表一条标准的sql语句,例如:

  sqlstr=“select * from tab1”

  set record set=mconn.exe cute(sqlstr)

  这条语句执行后,对象record set中就保存了表tab1中的所有记录。在asp文件中如何引用返回结果,本文将在文末给出一个实例说明。

  四、操作数据库

  刚才我们通过调用链接对象的execute方法来将查询结果返回给一个数据对象。我们说execute方法的参数是一个标准的sql语句串,所以我们可以利用它方便地执行数据插入、修改、删除等操作,例如:

  sqlstr=“insert into tab1 values(1,2)”

  mconn.execute(sqlstr)

  /执行插入操作

  sqlstr=“update tab1 set field1=3”

  mconn.execute(sqlstr)

  /执行修改操作

  五、关闭数据对象和链接对象

  在使用了ado对象之后,一定要记住关闭它,因为它使用了一定的服务器资源。通过调用方法close实现关闭,然后再释放它。

  record set.close

  set record set=nothing

  /关闭创建的数据对象

  mconn.close

  set mconn=nothing

  /关闭创建的链接对象

  至此,我们已给出了用asp访问数据库的全过程,包括创建数据源-创建链接-创建数据对象-操作数据对象-关闭并释放。这其间由于应用面向对象思想,应该说所有操作都比较简单,用户需要注意的仅是对数据结构的了解,亦要清楚当前所操作的对象是什么,有什么属性,等等。只要对这些有了清醒的认识,再加上asp的强大功能,在网络上应用你自己的数据库,就再也不是什么难事了!

  本文最后给出一个例子,这是基于数据库的asp留言簿程序,数据库结构如下:

  guestbook.mdb

  表lyb:

  xm char(100), ly char(255) , sj datetime

  文件guestbook.asp:

  <html>

  <head>

  <title>lyb</title>

  </head>

  <body bgcolor=“#ccccf0”>

  <p>留言簿</p>

  <form method=“post” action=“guestbook.asp”>

  <input type=“hidden” name=“task” value=“insert”>

  <p>姓名:<input type=“text” size=“20” name=“xm”></p>

  <p>留言:</p>

  <p><textarea rows=“5” cols=“80” name=“ly”></textarea></p>

  <p><input type=“submit” value=“记入留言簿” name=“b1”><input type=“reset”

  value=“复原” name=“b2”></p>

  </form>

  <%

  set conn = server.createobject(“adodb.connection”)

  conn.open “lybdsn”,“”,“”

  if request(“task”)=“insert” then

  xm=request(“xm”)

  sj = date()

  sj = sj & “ ” & hour(time()) & “:” & minute(time())

  if request(“ly”)=“” then

  response.write(“留言不能不输吧”)

  response.end

  else

  ly=request(“ly”)

  end if

  sql=“insert into lyb (xm,sj,ly) values (” & xm & “,” & sj & “,” & ly & “) ”

  conn.execute sql

  end if

  sql = “select * from lyb order by sj desc”

  set rs = conn.execute(sql) %>

  <% on error resume next

  rs.movefirst

  do while not rs.eof %>

  <hr>

  姓名:<%=server.htmlencode(rs.fields(“xm”).value)%><br>

  留于:<%=server.htmlencode(rs.fields(“sj”).value)%><br>

  留言:<%=server.htmlencode(rs.fields(“ly”).value)%>

  <% rs.movenext

  loop %>

  </body>

  </html>

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » ASP基础讲座(下)
分享到: 更多 (0)

相关推荐

  • 暂无文章