花过雨 2005-4-15 20:06
对感情太用力,彼此间不留空隙,走火入魔或分道扬镳可能是必然的结局。<br>
<br>
怎么做呢???<br>
空隙会成为距离吗?
0809 2005-4-17 16:22
有可能,最好是既有空间,又有距离<br>
不远不近,理想的
风云际 2005-7-17 00:09
用ASP连接数据库
[TABLE][TR][TD][SIZE=5]用ASP连接数据库[/SIZE][/TD][/TR][TR][TD]作者:网络 转贴自:本站原创 点击数:101 文章录入:风云际 [/TD][/TR][TR][TD][TR][TD][TR][TD]
原文标题:ASP 101 - A Database Interfacing Primer
[ALIGN=center]
[/TD][/TR][TR][TD]微软公司的ASP加上IIS3.0就能为网站建设、INTRANET应用提供一个灵活的构建方法,他可以方便地访问ODBC兼容的数据库。
这篇文章中,我们将学到数据库的基本操作,比如建立、添加记录、删除记录、编辑记录等。
使用ASP建立的动态主页与浏览器无关,也就是说,你不论用哪种浏览器都能浏览ASP的页面,使用JSCRIPT和VBSCRIPT加上一些其他ASP元件,你就能在你的INTRANET应用中使用ASP。使用ASP不仅意味着您可以读取ACCESS和SQL SERVER的数据库,同时也意味着你可以读取其他ODBC兼容的数据库。 使用ASP将比编写CGI快的多,对于那些习惯VISUAL BASIC的人来说, ASP将是最好的选择。
其他的如 [URL=javascript:if(confirm('http://www.chilisoft.net/ \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.chilisoft.net/']Chili!ASP[/URL] 功能上与ASP差不多,可以用在许多WWW平台上,甚至一些UNIX服务器(比如重庆太阳城,Linux ,ASP脚本用的是PERL语言。译注)。
在调试ASP代码时,我没有使用调试器,我发现大多数错误都是由于我的拼写错误引起的,或者是在HTML中嵌入变量时没有使用“=”。(关于在HTML中引用ASP变量值,或者输出,我在第一篇文章中有说明。译注)。 [/ALIGN][ALIGN=center][img]http://bdez.bdez.cn/jiaoxue/asp/tu1.jpg[/img]
这里提供的代码仅是一个例子,不能用做一个应用。如果在没有记录时,您尝试删除记录或编辑记录,程序并没有处理这种情况。这个例子是在NT4.0上建立的,数据库用MS Access 7,你必须有32位的ODBC驱动程序。(如果你安装了IIS3。0或ACCESS,那自然是已经有了,译注)
下面的例子包含了数据库的基本操作,但是这些操作可能每一个用ASP访问数据库的人都会用到。你可以往数据库中添加记录,编辑或删除记录。
[B]数据库
[/B]我用ACCESS的数据库做,建立一个数据库user.mdb
他包含两个表:TblUser,TblUserAccess.
TblUSer, 包含用户的一些信息,有以下字段: -用户名,用户登录名 ,用户口令,登录时间和访问级别 (USERNAME, USERLOGIN, USERPASSWORD, USERENTRYDATE, and ACCESSID). ACCESSID, 用户级别指向表TblUserAccess中的 ACCESSID字段. 表 TblUserAccess 用来定义访问级别- ACCESSDESC
[/TD][/TR][TR][TD] [img]http://bdez.bdez.cn/jiaoxue/asp/tu2.jpg[/img]
[/TD][/TR][TR][TD]
[/TD][/TR][TR][TD]
[B][U]DSN [/B][/U]
一旦你建好了数据库,你需要为数据库建立一个DSN入口,不防给他取名叫:UserDB1. 照下面的步骤去做:(关于[URL=http://bdez.bdez.cn/jiaoxue/asp/asp3.htm#??£oDSN£¨以下蝍]DSN[/URL],我将在本文末做介绍,译注)
[UL][*]单击“开始”,选设置控制面板。 [*]双击图标 "32位 ODBC",将弹出一个对话框,选标签 "System DSN" [*]单击 "Add" 添加一个 DSN 入口, 选择 "Microsoft Access Drive".确认。 [*]在 "Data Source Name" 栏里输入 "UserDB1", 然后单击"Select" 选择数据库,你可以按"Browse" 来选中 users.mdb.你可以把数据库放在任何位置,比如建立一个目录来放吧:c:\inetsrv\wwwroot\users\users.mdb [/*][/UL][/TD][/TR][TR][TD][B][U]连接数据库 方法一 [/B][/U]
ASP提供两种方法来访问数据库。在第一中方法中,你首先必须建立一个连接,之后,你可以加载任何合法的SQL语句。最后,关闭连接。 一些代码你可以直接拿来用。图二中,用“UserDB1”做DSN,建立连接后,可以用Execute加载任何合法的SQL语句。之后,在一个循环中引用数据。必须注意的是,在最后一定要记住关闭连接。
[/TD][/TR][TR][TD][PRE][SIZE=5]<[/SIZE]%Conn.Open "ADOSamples"Set RS = Conn.Execute("SELECT * FROM TblUser")Do While Not RS.EOF . Response.Write(rs("USERNAME")) . . RS.MoveNextLoopRS.CloseConn.Close%>[/PRE][/TD][/TR][TR][TD]
[/TD][/TR][TR][TD][U][B]连接数据库 方法二:
[/U][/B]另外一种方法是在用户的SESSION中建立连接。当SESSION结束时,关闭连接。这要用到文件Global.asa.每一个基于ASP的INTRANET应用都可以有一个global.asa,它应当存放在这个应用的根目录下。在 global.asa 文件中可以定义四个事件处理程序,四个事件是:- Application-Start , Session-Start, Application-End 和 Session-End. 你可以在事件session-Start 中打开数据库连接,在事件Session-End 中关闭连接。
在图四中,用用户名“userdblogin",口令"userdbpassword"建立了一个到DSN "UserDB1"的连接。在整个SESSION中都可以使用连接"Conn".
大家可以看例子default.asp 和文件global.asa.
[/TD][/TR][TR][TD][PRE]SUB Session_OnStart'---- Open ADO connection to databaseConn.Open "UsersDB1", "userdblogin","userdbpassword"END SUB[/PRE][/TD][/TR][TR][TD][PRE]Conn.Open "UserDB1", "userdblogin","userdbpassword"[/PRE][/TD][/TR][TR][TD]
[/TD][/TR][TR][TD][B][U]从表单中取得信息[/B][/U]
在基于ASP的应用中,你可以将ASP的例程代码放在一个专门的文件中,然后在需要的地方用"include"包含进来。图五中取得表单元素"Action"的值
[/TD][/TR][TR][TD][PRE]Action = Request.Form("Action")[/PRE][/TD][/TR][TR][TD]
[/TD][/TR][TR][TD][B][U]生成控制条[/B][/U]
依照action的值,可以显示不同的控件,发送不同的HTML文本到浏览器,图六中的代码表示,如果Action的值为空或为"ADD",就显示控件“添加”,“编辑”,“删除”。
[/TD][/TR][TR][TD][PRE][SIZE=3]if Action = "" or Action= "ADD" then CBar=CBar & " < td valign=top><input type=submit name=Action value=Add></td>" CBar=CBar & "< td valign=top><input type=submit name=Action value=Edit></td>" CBar=CBar & "<td valign=top><input type=submit name=Action value=Delete></td>"end if[/SIZE] [/PRE][/TD][/TR][TR][TD]
[/TD][/TR][TR][TD][B][U]插入记录 [/B][/U]
在检查了用户输入的各个表单域都合法时,就可以往数据库里插入记录。我们使用的是SQL语句来完成这件事。注意我们用了VBSCRIPT的函数 ForMatDateTime 来转换日期成 "mm/dd/yy" 格式(见default.asp,译注)。
[/TD][/TR][TR][TD][PRE][SIZE=3]sqlstr= "INSERT INTO TblUser "sqlstr= sqlstr & "(USERNAME, USERLOGIN, USERPASSWORD,"sqlstr= sqlstr & " USERENTRYDATE, ACCESSID )VALUES " sqlstr= sqlstr & "('" & USERNAME & "','" & USERLOGIN & "','" sqlstr= sqlstr & "& USERPASSWORD & "',#" & datetoday & "#," & ACCESSID & ")"[/SIZE][/PRE][/TD][/TR][TR][TD][SIZE=3][/SIZE]
[/TD][/TR][TR][TD][B][U]编辑记录[/B][/U]
为了编辑记录,我用两步实现。首先,查询出所有记录(只显示姓名),并在每一条记录旁显示一个单选扭,当用户选了要编辑的记录后,提交表单,然后才开始修改记录。图八中表示如何查询出所有记录。
[/TD][/TR][TR][TD][PRE]sqlstr="SELECT * FROM TblUser ORDER BY USERNAME ASC"set rsUsers=Conn.Execute(sqlstr)[/PRE][/TD][/TR][TR][TD]
[/TD][/TR][TR][TD][B][U]更新记录[/B][/U]
实际的修改是在图九中用SQL实现的。
[/TD][/TR][TR][TD][PRE]sqlstr= "UPDATE TblUser "sqlstr= sqlstr & "SET USERNAME ='" & USERNAME & "', "sqlstr= sqlstr & "USERLOGIN ='" & USERLOGIN & "', "sqlstr= sqlstr & "USERPASSWORD ='" & USERPASSWORD & "', "sqlstr= sqlstr & "USERENTRYDATE =#" & datetoday & "#, "sqlstr= sqlstr & "ACCESSID =" & ACCESSID sqlstr= sqlstr & " WHERE USERID=" & USERID & ";"[/PRE][/TD][/TR][TR][TD]
[/TD][/TR][TR][TD][B][U]删除记录[/B][/U]
为了删除记录,必须知道一个用户的 USERID,图十的代码生成了一个下拉菜单供选择。
下面是以上例子中用到的源代码:(default.asp中的注释已经译成中文,译注)
[/TD][/TD][TR][TD][PRE][SIZE=3]<[/SIZE][SIZE=3]%if Action="EDI" or Action="DEL" then '---- Edit Mode do until rsUsers.EOF strUsers=strUsers & "<option value=" & rsUsers("USERID") & ">" & rsUsers("USERNAME") rsUsers.MoveNext loop%>[/SIZE][/PRE]<tr><td valign=top>
<select name="USERID">
<%=strUsers%>
</select>
</td></tr>
<% end if %>
[/TD][/TR][TR][TD][URL=http://bdez.bdez.cn/jiaoxue/asp/404.htm]default.asp[/URL] [URL=http://bdez.bdez.cn/jiaoxue/asp/404.htm]global.asa[/URL]
附:DSN(以下为译者加上的)
在用ODBC时,经常见到DSN这个名词,那它是什么意思呢?DSN即Data Souce Name的意思,数据源名。我们知道,ODBC是一种访问数据库的方法,只要系统中有相应的ODBC驱动程序,任何程序就可以通过ODBC操纵驱动程序的数据库。比如,我们系统中有ACCESS的ODBC驱动程序,那我们不需要有ACCESS软件,就可以在我们的程序,如VB编的,VC编的等,中间往一个ACCESS的MDB数据库中加、删、改记录。而且我们根本不用知道这个数据库是放在那里的。我们只要写一些SQL语句就可以了。ODBC驱动程序会帮我们做一切事情。我们在给ODBC驱动程序传SQL指令时,用的即是DSN来告诉他到底操作的是哪一个数据库。如果数据库的平台变了,比如我们改用了SQL SERVER的数据库,只要其中表的结构没变,我们就不用改写我们的程序,只要重新在系统中配置DSN就行了。我们的程序还根本不知道已经换了人为他服务了呢。
由此可见,DSN是应用程序和数据库之间的桥梁,要通过ODBC访问数据库,前提就是,我们必须配置好DSN(即架好桥梁),从以上的我们可以看出,一个DSN必须包含一些信息,
[UL][*]DSN的名字,就是给这座桥取个名字,我们的程序中访问数据库时,给系统传的就是这个名字,而不是数据库的实际名字。 [*]用的是哪种ODBC驱动程序,这样子,在我们要操作数据库时,系统才会知道调哪个ODBC驱动程序来服务。 [*]数据库,你必须指定这座桥到底连接的是哪个数据库,这好象不用多说哦:),但不同的数据库系统,指定数据库的名字方法有些不同,ACCESS的就是让你选一个MDB文件。 [/*][/UL]这座桥是架在系统之中的,所以WIN95(NT)提供了一个工具来完成这件事,即是控制面板中的32 BIT ODBC,有三类DSN,用户DSN,系统DSN,文件DSN,我们一般就用系统DSN,因为这样可以让所有人都使用这个DSN。
[/TD][/TR][TR][TD]
[/TD][/TR][TR][TD]
[/TD][TD] [/TD][/TR][/TABLE][/ALIGN][/TD][/TR][/TD][/TR]