设为首页收藏本站关注微信<<< 抵制 IE6 人人有责 >>>
搜索
热搜: 活动 交友 discuz
查看: 4592|回复: 12
打印 上一主题 下一主题

[其他(待整理)] 十天学会ASP

[复制链接]
跳转到指定楼层
楼主
发表于 2016-1-26 03:45:57 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
学习目的:安装调试asp的环境,写出第一个HELLO WORLD程序。
    首先我们来安装WINSOWS2000自带的IIS作为服务器。(WINSOWS98的PWS也可以,但是不推荐,安装大致和2000相同,这里就不详细说了。)


先是控制面板-添加或删除程序。


然后是添加删除windows组件-选中IIS组件前面的勾


装好以后打开控制面板中的管理工具,会发现多了两个图标,打开IIS管理器


选择默认WEB站点,然后右键属性或者直接按快捷键


大家不要头痛,里面只有三个页面需要修改,先是WEB站点,如果用户有固定ip,可以分配一个IP


接下来在注目录中选择一个自己硬盘上面的文件夹存放网站,选中读取、写入




在文档中添加默认的页面,比如打www.sina.com.cn新浪就是调用了一个默认文档

接下来也是最关键的:1、在刚才你定义的一个文件夹里面新建一个文件,可以用记事本建立一个TXT文件然后改名为ASP,里面的内容如下
<%response.write "hello world!"%>
response.write就是显示的意思,前后的<%%>是asp的标记符号,在这里面的信息都由服务器处理。保存以后就可以在浏览器里面运行这个文件了。127.0.0.1(=localhost)是本机的IP,后面再直接加上建立的那个文件名字就可以了,之所以我图片上面还有一个example,那是因为我建立了一个虚拟目录,这个不知道不要紧,我们往下走,具体深入的东西大家自己慢慢研究,必尽我们的目的就是快速掌握嘛。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?免费注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享淘帖
回复

使用道具 举报

13#
 楼主| 发表于 2016-1-26 05:26:08 | 只看该作者
[AppleScript] 纯文本查看 复制代码
dim conn,db
dim connstr
db="/data/date.mdb" '数据库文件位置
on error resume next
connstr="DBQ="+server.mappath(""&db&"")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set conn=server.createobject("ADODB.CONNECTION")
if err then
err.clear
else
conn.open connstr
end if
sub CloseConn()
	conn.close
	set conn=nothing
end sub

回复 支持 反对

使用道具 举报

12#
 楼主| 发表于 2016-1-26 05:12:11 | 只看该作者
MS Access数据库连接
用DSN连接并且没有用户名和密码:
[AppleScript] 纯文本查看 复制代码
<%
set conn = Server.CreateObject("ADODB.Connection")
conn.open "YourDSNName"
%>


用DSN连接并且有用户名和密码:
[AppleScript] 纯文本查看 复制代码
<%
set conn = Server.CreateObject("ADODB.Connection")
conn.open "YourDSNName","username","password"
%>


用实际的数据库绝对路径连接:
[AppleScript] 纯文本查看 复制代码
<%
Set conn = Server.CreateObject("ADODB.Connection")
Strconn="DRIVER={Microsoft Access Driver (*.mdb)}; "
Strconn=Strconn & "DBQ=e:/yanhang/database.mdb" 
conn.Open Strconn
%>


用实际的数据库相对路径连接:
[AppleScript] 纯文本查看 复制代码
<%
Set conn = Server.CreateObject("ADODB.Connection")
Strconn="DRIVER={Microsoft Access Driver (*.mdb)}; "
Strconn=Strconn & "DBQ=" & Server.MapPath("/database/yanhang.mdb")
conn.Open Strconn
%>



MS SQL Server数据库连接
用DSN连接:
[AppleScript] 纯文本查看 复制代码
<%
set conn = Server.CreateObject("ADODB.Connection")
conn.open "DSN=MyDSN;UID=user;PWD=password;DATABASE=databasename"
%>


不用DSN连接:
[AppleScript] 纯文本查看 复制代码
<%
Set conn = Server.CreateObject("ADODB.Connection")
DSNtemp="DRIVER={SQL Server};SERVER=ServerName;UID=USER;PWD=password;DATABASE=databasename"
conn.open DSNtemp
%>



FoxPro数据库连接
[AppleScript] 纯文本查看 复制代码
<%
Set Conn = Server.CreateObject("ADODB.connection")
ConnStr= "Driver=Microsoft Visual Foxpro Driver; UID=userID;SourceType=DBC;SourceDB=C:/yanhang/database.dbc"
Conn.Open ConnStr
%>



Oracle数据库连接:
[AppleScript] 纯文本查看 复制代码
<%
set conn=server.createobject("adodb.connection")
conn.cursorlocation=adUseClient
DSNTemp="Provider=MSDAORA.1;Password=xxxxx;User ID=yanhang;Data Source=xxx.world"
conn.open DSNtemp
%>


请使用以下代码进行链接:
[AppleScript] 纯文本查看 复制代码
Set conn=Server.CreateObject("ADODB.Connection")
Params = "Provider=SQLOLEDB;data source=服务器地址;User ID=登录用户名;Password=登录密码;Initial Catalog=默认数据库"
conn.open params 



回复 支持 反对

使用道具 举报

11#
 楼主| 发表于 2016-1-26 05:00:09 | 只看该作者
本帖最后由 vingoo 于 2016-1-26 05:18 编辑

1. 相对与比较老的环境,建议使用第二个
[AppleScript] 纯文本查看 复制代码
set dbconnection=Server.CREATEOBJECT("ADODB.CONNECTION") 
DBPath = Server.MapPath("customer.mdb") 
dbconnection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath 
SQL="select * from auth where id='" & user_id &"'" 
SET uplist=dbconnection.EXECUTE(SQL) 


2.win2003以上的机器,建议用此方法,效率更高
[AppleScript] 纯文本查看 复制代码
set dbconnection=Server.CreateObject("ADODB.Connection") 
DBPath = Server.MapPath("customer.mdb") 
dbconnection.Open "provider=microsoft.jet.oledb.4.0;data source="&dbpath 
SQL="select * from auth where id='" & user_id &"'" 
SET uplist=dbconnection.EXECUTE(SQL) 


3.
[AppleScript] 纯文本查看 复制代码
DBPath = Server.MapPath("customer.mdb") 
set session("rs")=Server.CreateObject("ADODB.Recordset") 
' rs=Server.CreateObject("ADODB.Recordset") 
connstr="provider=microsoft.jet.oledb.4.0;data source="&dbpath 
SQL="select * from auth where id='" & user_id &"'" 
session("rs").Open sql,connstr,1,3 


4.建odbc源xxx
[AppleScript] 纯文本查看 复制代码
set conn=server.createobject("Adodb.connection") 
conn.open "DSN=xxx;UID=;PWD=;Database=customer 


5、附上一个经常用的sqlserver与access通用的连接数据库代码
[AppleScript] 纯文本查看 复制代码
<% 
Const DataBaseType=1 
If DataBaseType=0 then 
DBPath="/jb51/news.asp" 
SqlNowString = "Now()" 
ystr=true 
nstr=false 
suiji="rnd(id)" 
Else 
'如果是SQL数据库,请认真修改好以下数据库选项 
DataServer = "wwwjb51net" '数据库服务器IP 
DataUser = "jb51net" '访问数据库用户名 
DataBaseName = "jb51net" '数据库名称 
DataBasePsw = "密码" '访问数据库密码 
SqlNowString = "getdate()" 
ystr=1 
nstr=0 
suiji="newid()" 
End if 
On Error Resume Next 
If DataBaseType = 1 Then 
ConnStr="driver={SQL Server};server="&dataserver&";UID="&datauser&";PWD="&databasepsw&";Database="&databasename 
Else 
ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(DBPath) 
End If 
Set conn = Server.CreateObject("ADODB.Connection") 
conn.open ConnStr 
If Err Then Err.Clear:Set conn = Nothing:Response.Write "数据库连接出错,请检查Conn.asp文件中的数据库参数设置。":Response.End 
%> 



回复 支持 反对

使用道具 举报

10#
 楼主| 发表于 2016-1-26 03:57:03 | 只看该作者
学习目的:分页技术,总结
    今天最后一天我们学习一下ASP里面稍微难一点地分页技术,毕竟当我们有N条记录的时候我们不可能把所有记录显示在一个页面里面吧。
[AppleScript] 纯文本查看 复制代码
<%
exec="select * from test"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
rs.PageSize=3
pagecount=rs.PageCount 
page=int(request.QueryString ("page"))
if page<=0 then page=1
if request.QueryString("page")="" then page=1
rs.AbsolutePage=page 
%>

rs.pagesize设置一个页面里面显示的记录数,pagecount是我们自己定义的一个变量,rs.pagecount是记录的个数,page也是我们自己定义的一个变量,我们下一页的链接可以设置为list.asp?page=<%=page+1%>,下一页的链接可以设置为list.asp?page=<%=page-1%>,这样当按下链接的时候调用页面自己,page这个变量就+1或者-1了,最后我们让rs.absolutepage(当前页面)为第page页就可以了。
if request.QueryString("page")="" then page=1,这句话的作用就是我们打开list.asp的时候没有跟随page变量,自动设置为page=1,防止出错,还有当我们if....then...放在一行的时候end if可以省略。是不是分页也不难?
下面说一种特殊情况:
if page=1 and not page=pagecount,这个时候没有上一页,但是有下一页
elseif page=pagecount and not page=1,这个时候没有下一页,但是有上一页
elseif page<1,这个时候没有任何记录
elseif page>pagecount then,这个时候没有任何记录
elseif page=1 and page=pagecount,这个时候没有上一页,没有下一页
else,这个时候有上一页,也有下一页。
下面看一段显示1到n页,且每一个数字点击以后就出现这个数在代表的页面的代码,很常见哦。
[AppleScript] 纯文本查看 复制代码
<%for i=1 to pagecount%>
<a href="list.asp?page=<%=i%>"><%=i%></a><%next%>

for....next是循环从i=1开始,循环一次加1到pagecount为止。

最后我的实例里面包含了一个最简单的ASP程序,但是功能样样有,是ASP的精髓,每一个ASP大型程序都包含了它。
add.htm增加记录页面
add.asp增加记录操作
conn.asp数据库链接
del.asp删除记录操作
modify.asp修改记录页面
modifysave.asp修改记录操作
list.asp这个是这个程序的核心,通过这个页面实现记录的添加、修改、删除。
test.mdb数据库,里面有aa,bb两个字段:aa数字型只能接受数字,bb是字符型。

好了,十天到今天就结束了,我想我这个教程是让大家入门的,大家觉得写的浅也不要责怪必尽不可能初学者和高手都照顾到吧,最后我想说一句,今天的实例是ASP的精华,大家一定要好好研究,通了这个程序,你会发现你已经会ASP了。谢谢大家的支持!大家有问题可以在我的论坛里面留言,希望大家帮站长多多宣传本站,转贴本站文章的也请著名出处,谢谢合作。

回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2016-1-26 03:56:18 | 只看该作者
学习目的:基本的SESSION组件,总结response,request组件。
    首先,有会员系统的任何程序都会用到检测是不是用户已经登陆这个步骤。这就用到了SESSION组件,下面我们    看一个代码来说明。
[AppleScript] 纯文本查看 复制代码
<%
session("islogin")="yes"
%>

这句话的意思就是在session里面定义一个islogin字符串变量,值为"yes",直接可以赋值,不需要声明。是不是很简单?
如果我们做管理员登陆系统的话,首先是一段检测是不是管理员
if 是 then
[AppleScript] 纯文本查看 复制代码
session("isadmin")=yes"
else 
session("isadmin")="no"
end if

在每一个需要管理员才能看的页面最前面加上
[AppleScript] 纯文本查看 复制代码
<%
if not session("isaadmin")="yes"then
response.redirect "login.htm"
%>

这样一般用户就无法打开这个页面。解释一下response.redirect,它是转向的意思,后面的"login.htm"就是转向的文件。这样没有登陆的管理员是无法看到后面的内容的。
    下面总结一下
response组件基本就是用到response.write (),response.redirect() 分别是写字符串和转向的作用
request基本就是request.form(),request.querystring() 分别是接受post,get方法传来的信息
今天就说到这里了,最后我的示范是一个登陆系统大家可以研究一下,基本就是上面的知识点比较简单的。
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2016-1-26 03:55:27 | 只看该作者
学习目的:学会数据库的基本操作4(修改记录)
    先来看代码:
[AppleScript] 纯文本查看 复制代码
<%
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("test.mdb")//这不是以前的一个数据库,里面就aa,bb两个字段
exec="select * from test where id="&request.querystring("id")
set rs=server.createobject("adodb.recordset")
rs.open exec,conn
%>
<form name="form1" method="post" action="modifysave.asp">
<table width="748" border="0" cellspacing="0" cellpadding="0">
<tr> 
<td>aa</td>
<td>bb</td>
</tr>
<tr> 
<td>
<input type="text" name="aa" value="<%=rs("aa")%>">
</td>
<td>
<input type="text" name="bb" value="<%=rs("bb")%>">
<input type="submit" name="Submit" value="提交">
<input type="hidden" name="id" value="<%=request.querystring("id")%>">
</td>
</tr>
</table>
</form>
<%
rs.close
set rs=nothing
conn.close
set conn=nothing
%>

大家到现在应该分析这个代码没有什么问题,这个代码的作用是接受前面一个页面的ID然后显示这条记录,文本框即是输入的地方也是显示的地方,如果需要修改的话修改以后按提交;如果不需要修改就可以直接按提交按钮。这里还有一个东西以前没有说,那就是隐藏的表单元素:hidden元素,里面的value是不用用户输入的,会随着表单一起提交,用于传递变量。下面是modifysave.asp的代码:
[AppleScript] 纯文本查看 复制代码
<%
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("test.mdb")
exec="select * from test where id="&request.form("id")
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,3
rs("aa")=request.form("aa")
rs("bb")=request.form("bb")
rs.update
rs.close
set rs=nothing
conn.close
set conn=nothing
%>

在这里,rs.open exec,conn,1,3后面的参数是1,3,这我以前提过,修改记录就要用1,3。实际上修改记录很容易看懂,记录集是rs,rs("aa")就是当前记录aa字段的东西,让它等于新的数据request.form("aa")当然就修改了,不过最后别忘记保存,那就是rs.update!
说到这里,记录的搜索,读取,修改,插入都说了,通过这最基本的东西就可以作出复杂的东西了,外面的大型数据库:新闻系统,留言簿就是字段多一点罢了。今天的示例中的代码是结合以前的数据库的,大家DOWN了以后回去调试分析一下。(rar里面的那个example72.asp还是供大家查询记录ID和核对修改以后的记录用的)
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2016-1-26 03:54:34 | 只看该作者
学习目的:学会数据库的基本操作3(删除记录)
开门见山,大家直接看程序。
[AppleScript] 纯文本查看 复制代码
exec="delete * from guestbook where id="&request.form("id")

上面这句话完成了删除记录的操作,不过锁定记录用了记录唯一的表示id,我们前面建立数据库的时候用的是系统给我们的主键,名字是编号,由于是中文的名字不是很方便,大家可以修改为id,不修改的话就是
[AppleScript] 纯文本查看 复制代码
exec="delete * from guestbook where 编号="&request.form("id")

下面我们看完整的代码:一个表单传给ASP文件一个ID,然后这个ASP文件就删除了这个ID。
[AppleScript] 纯文本查看 复制代码
<form name="form1" method="post" action="example7.asp">
delete: 
<input type="text" name="id">
<input type="submit" name="Submit" value="提交">
</form>


example7.asp:
[AppleScript] 纯文本查看 复制代码
<%
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("example3.mdb")
exec="delete * from guestbook where 编号="&request.form("id")
conn.execute exec
%>

我在示例里面加了一个example72.asp,和example4.asp差不多,就是加了一个id字段,大家可以先运行这个文件看一下所有记录的ID和想删除记录的ID,删除记录以后也可以通过这个文件复查。等到最后一天,我们会把所有的这些东西整合的。大家就不会需要这么麻烦的操作。
example72.asp:
[AppleScript] 纯文本查看 复制代码
<%
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("example3.mdb")
exec="select * from guestbook"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1 
%>
<html>
<head>
<title>无标题文档</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<%
do while not rs.eof
%><tr>
<td><%=rs("编号")%></td>
<td><%=rs("name")%></td>
<td><%=rs("tel")%></td>
<td><%=rs("message")%></td>
<td><%=rs("time")%></td>
</tr>
<%
rs.movenext
loop
%>
</table>
</body>
</html>



回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2016-1-26 03:53:31 | 只看该作者
学习目的:学会数据库的基本操作2(查询记录)
    在第四天中我们有这样一个程序:
[AppleScript] 纯文本查看 复制代码
<%
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("example3.mdb")
exec="select * from guestbook"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1 
%>

我们查询的是所有的记录,但是我们要修改、删除记录的时候不可能是所有记录,所有我们要学习检索合适的记录。先看一条语句:
[AppleScript] 纯文本查看 复制代码
a="张三"
b=111 
exec="select * from guestbook where name='"+a+"'and tel="+b

where后面加上的是条件,与是and,或是or,我想=,<=,>=,<,>的含义大家都知道吧。这句话的意思就是搜索name是张三的,并且电话是111的记录。还有一点就是如果要搜索一个字段里面是不是包含一个字符串就可以这么写:where instr(name,a)也就是搜索name里面有a(张三)这个字符串的人。
我这里的a,b,是常量,大家可以让a,b是表单提交过来的变量,这样就可以做一个搜索了。
下面大家看看这个代码,理解一下:

[AppleScript] 纯文本查看 复制代码
<form name="form1" method="post" action="example6.asp">
搜索:<br>
name =
<input type="text" name="name">
and tel= 
<input type="text" name="tel">
<br>
<input type="submit" name="Submit" value="提交">
<input type="reset" name="Submit2" value="重置">
</form>


example6.asp:
[AppleScript] 纯文本查看 复制代码
<%
name=request.form("name")
tel=request.form("tel")
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("example3.mdb")
exec="select * from guestbook where name='"+name+"' and tel="+tel
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
%>
<html>
<head>
<title>无标题文档</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head> 
<body bgcolor="#FFFFFF" text="#000000"> 
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<%
do while not rs.eof
%><tr>
<td><%=rs("name")%></td>
<td><%=rs("tel")%></td>
<td><%=rs("message")%></td>
<td><%=rs("time")%></td>
</tr>
<%
rs.movenext
loop
%>
</table>
</body>
</html>


今天实际上就讲了一个where,大家回去做做试验,把instr()做进去,明天见!

回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2016-1-26 03:52:06 | 只看该作者
学习目的:学会数据库的基本操作1(写入记录)
    数据库的基本操作无非是:查询记录,写入记录,删除记录,修改记录。今天我们先学习写入记录。
先建立一个表单:
[AppleScript] 纯文本查看 复制代码
<form name="form1" method="post" action="example5.asp">
name <input type="text" name="name"><br>
tel <input type="text" name="tel"><br>
message <input type="text" name="message" value=""><br>
<input type="submit" name="Submit" value="提交">
<input type="reset" name="Submit2" value="重置">
</form>

表单提交到example5.asp,下面是example5.asp的代码:
[AppleScript] 纯文本查看 复制代码
<%
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("example3.mdb")
name=request.form("name")
tel=request.form("tel")
message=request.form("message") 
exec="insert into guestbook(name,tel,message)values('"+name+"',"+tel+",'"+message+"')"
conn.execute exec
conn.close
set conn=nothing
response.write "记录添加成功!"
%>

在这里前面两句我不说了,后面三句我也不说了,前面说过exec里面的是执行的命令,添加记录的比较繁,大家要仔细看。insert into后面加的是表的名字,后面的括号里面是需要添加的字段,不用添加的或者字段的内容就是默认值的可以省略。注意,这里的变量一定要和ACCESS里面的字段名对应,否则就会出错。values后面加的是传送过来的变量。exec是一个字符串,"insert into guestbook(name,tel,message)values('"是第一段,在ASP里面不能嵌双引号,所以可以用'代替双引号,放在双引号里面,连接两个变量用+或者&所以"',"又是一段,中间夹了一个name就是表单传来的变量,这样就可以在这个变量外面加两个'',表示是字符串了,后面的tel是数字型变量所以不需要外面包围'',大家慢慢分析这句话,如果用表单传来的数据代替变量名字的话这句话为(假设name="aaa",tel=111,message="bbb"):"insert into guestbook(name,tel,message)values('aaa',111,'bbb')"。
接下来的conn.execute 就是执行这个exec命令,最后别忘记把打开的数据库关闭,把定义的组件设置为空,这样可以返回资源。上次的读取为了简单,我没有关闭,大家可以补充上去:
[AppleScript] 纯文本查看 复制代码
rs.close
set rs=nothing
conn.close
set conn=nothing

记住,次序不可以颠倒!
大家可以到数据库里面去看一看,或者用example4.asp读取看看是不是多了记录阿?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

QQ|手机版|Archiver|源于生活(个人生活娱乐工作的笔记)css3,html5,学习笔记    

GMT+8, 2024-5-17 12:00 , Processed in 0.124801 second(s), 35 queries .

Powered by Mr.Kevin-ying

© 2004-2015

快速回复 返回顶部 返回列表