61阅读

asp连接access数据库-asp和access的链接

发布时间:2017-11-23 所属栏目:IT计算机

一 : asp和access的链接

一、安装与调试

常听朋友感叹ASP程序难学不易懂,不过我起初学习这门技术的时候也有过这样的感悟。[www.61k.com]从今天开始,我将以我学ASP的经验来做一个简单的ASP留言本,

asp access asp和access的链接

这个留言本用了Access

asp access asp和access的链接

数据库,所以务必请大家要跟我一起做的朋友都安装好Office软件,相信各位自己的电脑上都有了。好了,开始。

创建ASP的运行环境(安装IIS)

IIS(Internet Information Service)是构建ASP站点所必须的,所以,我们应该先确认自己的电脑已安装了IIS信息服务,如果没有安装好的话,请按以下步骤:

1、打开“控制面板”

2、双击“添加/删除程序”

3、单击“添加/删除Windows组件”,打开添加/删除Windows组件对话框:

asp access asp和access的链接

asp access asp和access的链接

3

asp access asp和access的链接

、从下拉的列表中选择“Internet 信息服务(IIS)”单击“下一步”:

asp access asp和access的链接

4、出现组件安装进度窗口,如弹出需要安装盘的话,放入

asp access asp和access的链接

Windows2000安装盘,按提示操作即可。[www.61k.com]直至最后安装完毕。

二、设计数据库

ASP程序本身并不能储存数据,众所周知,留言本有以下信息需要保存:留言者姓名、联系方式、留言内容等等。因为ASP并不能储存数据,所以数据库在这种环境之下就产生了。数据库的种类也很多,针对不同的程序也有适用于它的数据库,比如Access和Ms SQL就比较适用ASP和ASP.net程序,至于其它的数据库和程序,就不属于本文所讨论的问题了,有兴趣的朋友可以查看其它一些资料。

那么既然Access和MS SQL都适用ASP,那么具体又如何来选择呢?我们可以打一个比方:比如钉一枚小钉子,聪明的人一定不会用一个大的棒槌,而是选择小的铁锤,虽然用大的棒槌也一样的可以把钉子钉进去,可是没有人愿意这样做。

数据库也一样:Access比较适用小型的应用,而MS SQL则适用于大中型的数据库应用,所以要做一个留言本,理所当然是选择Access更好一些,但是如果你决心使用MS,没有人会极力阻止你。好了,废话少说,切入正题,下面开始创建数据库。

Access是微软office办公软件中的其中一个,默认的安装Office是有这个Access的,好了,打开程序,开始了,GO!

进入实战了。打开程序后,出现一个对话框,这里我们选择第一个选项"空Access数据库"点击确定,弹出一个新建数据库的文件框,选择你上次你建的站点目录,起个data的文件名,点击创建,OK! 双击"使用设计器创建表"打开表创建窗口"如图

asp access asp和access的链接

asp access asp和access的链接

创建表的结构如下表:

asp access asp和access的链接

字段名称

id

user

qq

email

content

data

数据类型 自动编号 文本 数字 文本 备注 日期/时间 备注(笔者注释) 设置“自动编号” 留言者姓名 留言者的QQ,因为QQ号是由数字组成 留言者的电子邮件 留言内容 留言时间,设定默认值为Now()

数据库设计好了以后,可以直接在数据库里添加两条记录,以后测试时候用!这一节就到此了

三、连接数据库

在上一节,我们已经为我们的程序创建了一个数据库,在这一节中,我们来用ASP把程序和数据库连接起来,以后

asp access asp和access的链接

就可以连接到数据库、在ASP中显示数据库中的数据以及更复杂的插入、修改和删除。(www.61k.com)

conn.open connstr

%>

解释一下以上代码:

<% '这是ASP程序的起始

set conn=server.createobject("adodb.connection") '在服务器上创建了一个连接数据库的对象

c&server.mappath("data.mdb") '告诉ASP数据库的接接方法以及路径

conn.open connstr '创建了对象后就用来打开数据库进行连接

%> '一切OK了!结束ASP程序

将上面的代码另存为conn.asp文件,放在服务器目录下面就可以了。怎么样,简单吧?

这一节是最重要的,一定要弄明白,否则以后操作数据库将变得不现实,如果有不懂的问题,欢迎和我讨论,我的电子邮件地址是。这一节就到此,下节我们就将数据库中的数据显示在页面中(这就实现了留言本的查看功能)

三、制作留言本首页

前面我们已经连接好了数据库,就要让它在这里发挥一下作用了,这一节将讲述如何将数据库里的数据用ASP读取出来,在页面中显示出来,这样就等于是查看留言本了。

利用DW制作如下页面(这里我就不讲如何去做这个页面了,最后我将会给出HTML代码下载)

asp access asp和access的链接

将制作好的文件存为index.asp,下面就创建数据记录集,用来显示数据库的数据到这个页面中:

用记事本打开index.asp,在页头加入以下代码:

复制内容到剪贴板

代码:

<%@LANGUAGE="VBScript" codepage="936"%>

<!--#include file="conn.asp"-->

<%

set rs=server.createobject("adodb.recordset")

sql="select user,qq,email,content,data from main order by id desc"

rs.open sql,conn,1,1

%>

复制内容到剪贴板

61阅读提醒您本文地址:

代码:

<%@LANGUAGE="VBScript" codepage="936"%> <!--#include file="conn.asp"--> <% set rs=server.createobject("adodb.recordset") sql="select

user,qq,email,content,data from main order by id desc" rs.open sql,conn,1,1 %>

[Ctrl+A 全部选择 然后拷贝]

解释一下:

第一行,表明ASP使用的是VB脚本

第二行,是用include包含文件,这里包含的是数据库连接文件。(www.61k.com)

第三行,ASP程序开始

第四行,利用Server内置对象创建一个记录集

第五行, SQL语句,这里的意思是选择数据库中的user,qq,email,content,data字段,指定该数据表的名称是“main”数据 的排列顺序是倒序。

第六行,用刚才创建的名为rs的记录集打开数据库,设置属性为只读(1,1为只读数据,1,3为插入数据,2,3是修改数据。

这样就打开了数据库,接下来就可以显示了。

将“留言人”代替为“<%=rs("user")%>

“时间”代替为“<%=rs("data")%>

“留言内容在此”代替为“<%=rs("content")%>

“QQ”链接到:http://search.tencent.com/cgi-bin/friend/user_show_info?ln=<%=rs("qq")%>

“邮件”链接到:mailto:<%=rs("email")%>

最后将“填写留言”链接 add.asp “管理留言”链接 admin.asp

好了,再次保存,浏览看看!

asp access asp和access的链接

asp access asp和access的链接

asp access asp和access的链接

怎么了?只显示一条记录?原来我们在数据库里添加了两条记录的哦!还有一条呢?别急,因为我们没有指定ASP循环显示,所以就只有一条啦。(www.61k.com)。。

在刚才的代码后面添加一行

<%do while not rs.eof%>

并在页面的第一个表格的末尾加上

<%

rs.movenext

loop

%>

上面的代码就是说用rs记录集指针一条一条往下一条移动,直到末尾,loop是循环的意思。。哈哈,再次浏览这个文件

看明白了吗,这样就可以让数据库中的数据全部显示在页面中了,好了,这节就到这,下节讲一个也很重要的部份(添加留言功能。)

三、制作添加留言页面,实现留言功能

我们是做的一个留言本,实现留言的功能就十分重要了,要不然就算不上留言本了,接下来就一起来实现这个功能。 用DW制作以下这样的页面:

asp access asp和access的链接

asp access asp和access的链接

设置表单的属性如下:

姓名:设置为单行文本域,名称为“user”

QQ号:设置为单行文本域,名称为“qq”

邮件:设置为单行文本域,名称为“email”

内容:设置为多行文本域,名称为“content”

最后将表单的“Action”动作指向addsave.asp就可以了。(www.61k.com]

保存文档名为add.asp,OK!下一步!

表单是做好了,但是还需要后台程序的支持,一起来使用ASP编写一个添加留言处理程序,添加留言代码:

代码拷贝框

<%@LANGUAGE="VBScript" codepage="936"%> '表明ASP使用的是VB脚本 <!--#include file="conn.asp"--> '是用include包含文件,这里包含的是数据库连接文件 <% set rs=server.createobject("adodb.recordset") '利用Server内置对象创建一个记录集 sql="select user,qq,email,content,data from main" 'SQL语句,上

节有详解 rs.open sql,conn,1,3 '用刚才创建的名为rs的记录集打开数据库,设置属性为插入数据 rs.addnew '用记录集新添加一条数据 user=request.form("user") '请求表单的变量,定义变量为user,这里

request.form是请求表单的意思 qq=request.form("qq") '请求表单的变量,定义变量为qq,这里request.form是请求表单的意思 email=request.form("email") '请求表单的变量,定义变量为email,这里request.form是请求表单的意思 content=request.form("content") '请求表单的变量,定义变量为content,这里

request.form是请求表单的意思 rs("user")=user '将请求到的表单值传向记录集中代表user字段的名称 rs("qq")=qq '将请求到的表单值传向记录集中代表qq字段的名称 rs("email")=email '将请求到的表单值传向记录集中代表email字段的名称 rs("content")=content '将请求到的表单值传向记录集中代表

content字段的名称 rs.update '更新一下数据库中的数据。 rs.close '关闭记录集 set rs=nothing '销毁记录集 conn.close '关闭数据库连接 set rs=nothing '销毁数据库连接 %>

[Ctrl+A 全部选择 然后拷贝]

<%@LANGUAGE="VBScript" codepage="936"%> '表明ASP使用的是VB脚本

<!--#include file="conn.asp"--> '是用include包含文件,这里包含的是数据库连接文件

<%

set rs=server.createobject("adodb.recordset") '利用Server内置对象创建一个记录集

sql="select user,qq,email,content,data from main" 'SQL语句,上节有详解

rs.open sql,conn,1,3 '用刚才创建的名为rs的记录集打开数据库,设置属性为插入数据

rs.addnew '用记录集新添加一条数据

user=request.form("user") '请求表单的变量,定义变量为user,这里request.form是请求表单的意思

asp access asp和access的链接

qq=request.form("qq") '请求表单的变量,定义变量为qq,这里

asp access asp和access的链接

61阅读提醒您本文地址:

request.form是请求表单的意思

email=request.form("email") '请求表单的变量,定义变量为email,这里request.form是请求表单的意思 content=request.form("content") '请求表单的变量,定义变量为content,这里request.form是请求表单的意思

rs("user")=user '将请求到的表单值传向记录集中代表user字段的名称

rs("qq")=qq '将请求到的表单值传向记录集中代表qq字段的名称

rs("email")=email '将请求到的表单值传向记录集中代表email字段的名称

rs("content")=content '将请求到的表单值传向记录集中代表content字段的名称

rs.update '更新一下数据库中的数据。[www.61k.com]

rs.close '关闭记录集

set rs=nothing '销毁记录集

conn.close '关闭数据库连接

set rs=nothing '销毁数据库连接

%>

将以上文件存为addsave.asp,测试下!咦?怎么填好提交以后就出现空白了,为什么?这是因为在addsave.asp中没有设置数据成功提交好后的转向页面,这里不用做那么复杂的,只要做一个刷新页面就行了,在程序的后面加上: <meta http-equiv="refresh" c>

然后在页面中添加提示信息,比如:“您的留言已经成功提交,2秒钟后将自动返回留言本首页”

好了,这个留言的功能总算实现了,最后再测试下,看看效果!

OK!这个留言功能的实现教程就到这里了。

六、制作管理登陆页面

留言本的管理功能对于留言本来说就不言而喻了,像论坛的登陆功能就是一个很好的例子,不过我们做留言本基本上有删除功能就行了,写这个教程是为了更多的ASP入门者更好的了解ASP,所以旨在学习用,当然也可以在这基础上添加更多的功能,比如回复留言者。

好了,开始了,还是按照以前的,用Dreamweaver做一个登陆页面,如下图:

asp access asp和access的链接

asp access asp和access的链接

asp access asp和access的链接

把用户名的表单名称设置为admin

asp access asp和access的链接

,密码的表单名称设为password,把动作指向checkpass.asp,,存admin.asp这样登陆页面就好了,

下面就做检测密码的ASP程序了,看以下代码解释:

<!--#include file="conn.asp"--> '把conn.asp包含进来连接数据库

<% 'ASP起始

asp access asp和access的链接

admin=request.form("admin") '定义admin的值是表单传过来的用户名域名称admin

password=request.form("password") '定义admin的值是表单传过来的用户名域名称admin

if admin="" or password="" then '这句的意思是假如用户名和密码没有输入的话那么执行下一句

response.Write("<script language=javascript>alert('请填写完整!');history.go(-1)</script>") '用javascript脚本提示用户

end if '结束if语句

sql="select * from admin where admin='"&admin&"' and password='"&password&"'" '这句很重要,我们放到后面讲

set rs=conn.execute(sql) '设定记录集rs,用conn执行SQL语句

if rs.eof or rs.bof then '当没有符合筛选结果时,则执行下面的句子

response.write "<script language=javascript>"

response.write "alert('用户或密码不对!');"

response.write "javascript:history.go(-1);"

response.write "</script>" '用javascript脚本提示用户

else '如果符合条件的时候

session("admin")=admin '新建session,值等于表单传来的用户名

response.redirect "mymanage.asp" '转向到mymanage.asp,进入管理页

end if '结束if语句

%> 'ASP结束

代码拷贝框

<!--#include file="conn.asp"--> '把conn.asp包含进来连接数据库 <% 'ASP起始 admin=request.form("admin") '定义admin的值是表单传过来的用户名域名称admin password=request.form("password") '定义admin的值是表单传过来的用户名域名称admin if admin="" or password="" then '这句的意思是假如用户名和密码没有输入的话那么执行下一句 response.Write("<script language=javascript>alert('请填写完整!');history.go(-1)</script>") '用javascript脚本提示用户 end if '结束if语句 sql="select * from admin where admin='"&admin&"' and

password='"&password&"'" '这句很重要,我们放到后面讲 set rs=conn.execute(sql) '设定记录集rs,用conn执行SQL语句 if rs.eof or rs.bof then '当没有符合筛选结果时,则执行下面的句子 response.write "<script language=javascript>" response.write "alert('用户或密码不对!');" response.write

"javascript:history.go(-1);" response.write "</script>" '用javascript脚本提示用户 else '如果符合条件的时候 session("admin")=admin '新建session,值等于表单传来的用户名 response.redirect "mymanage.asp" '转向到mymanage.asp,进入管理页 end if '结束if语句 %> 'ASP结束

[Ctrl+A 全部选择 然后拷贝]

将以上代码保存为checkpass.asp

这样,用户在admin.asp页面中输入用户名和密码后,就把用户名和密码值传给checkpass.asp处理,当用户名和密码的值和数据库中的字段相匹配时,就进入mymanage.asp这个管理页面,同时建一个session,这个session的会话变量将在后面起作用,下一节就明白了。[www.61k.com)

61阅读提醒您本文地址:

七、制作管理页面

上节中讲的是制作登陆页面和检测用户,当用户名和密码正确时就转到管理页面,好了,开始实现它。

其实这个留言本的管理页面和用户直接看到的首页没有多大的区别,只是用了Session会话变量用作保护和增加了一个删除链接,当点击这个链接的时候,就会自动删除这条留言,好了,其本的目的知道了,那就GO!

刚才讲了,这个页面和首页的index.asp相似,那么就先复制就行了,然后再改一下

首先找到下面这句:

asp access asp和access的链接

sql="select user,qq,email,content,data from main order by id desc"

asp access asp和access的链接

把它改为

sql="select id,user,qq,email,content,data from main order by id desc"

这样,就选取到了id这个自动编号的值,以便删除留言时锁定这个id。[www.61k.com]

然后在“邮件”这个链接后面增加一个链接“删除”,链接:del.asp?id=<%=rs("id") ,修改代码后为<a href="del.asp?id=<%=rs("id")%>" >删除</a> 这样,待会我们做del这个页的时候,就会知道为什么了! 改过后存为mymanage.asp

现在打开浏览器看看!

怎么不用输入用户名和密码都可进入呀?别急,上节中,我们不是建了一个session的会话变量,这时就派上用场了,直接用记事本打开。在<%@LANGUAGE="VBScript" codepage="936"%>这句的后面加上<%if session("admin")<>"" then%>这句,在末尾写上:

<%

else

response.Redirect("admin.asp")

end if%>

下面来讲解一下。

<%if session("admin")<>"" then%> '就是说如果session这个("admin")的值不是空的话就执行。

<%

else

response.Redirect("admin.asp")

end if%> '为空的话就转向登陆页,重新登陆,这样的话,直接输入网址的话就会跳到admin.asp,简单吧! 好了,这节就到这里了。

八、删除留言

上节我们增加了一个删除留言的链接,以下是这个del.asp的代码

很明了吧,才几句,第1、2、3句都不用我解释了,大家都在上几节中明白了。

第4句:

id=Request.QueryString("id") 用id取值字符串中传的id,回头看一下删除的链接:del.asp?id=<%=rs("id")%> 就是这个链接才把id的值传来的,<%=rs("id")%>是读取数据库中的自动编号字段中的id。

第5句:

用sql定义SQL语句,这里的*是通配符,表示所有,而Where有点像我们汉语中的“当”,整句话的意思是选择所有来自表名为main的字段,它的条件是当数据库中的id字段是字串所传来的id。如果这个没有的话这个一时间不明白也不要紧,慢慢接触就知道了。

asp access asp和access的链接

第6句是打开符合条件的记录,确切的讲不应该叫记录集了,因为经过我们这样筛选的话,记录绝对是一条,2,3指定可以对数据库中的数据进入修改。(www.61k.com]

第7、8句

rs.delete 看了就明白了,原来这才是整个程序的精髓,就是执行删除了。

rs.update 这是更新数据库中的表,删除后就更新。

最后大家自己用rs.close和conn.close释放。

经过这几节的学习,大家应该对ASP有所了解和认识了,这个做ASP留言本的教程就到此结束了,欢迎大家讨论学习ASP方面的问题!

61阅读提醒您本文地址:

二 : 五个小时学会Asp连接access添加,删除,修改

1:首先建立一个access数据库保存为 xhnew.mdb 表名为aa

字段如下:

id 自动排序

name 文本

content 文本

xhtime 日期 默认值 now()

title 文本

2:打开DW 建立文件conn.asp文件

代码如下:

CODE:

<%

set conn=server.createobject("adodb.connection")

conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("xhnew.mdb")

%>

这段语句是连接数据库的语句 set conn=server.createobject("adodb.connection")创建一个connection对象 用该对象的open方法打开数据库

driver={microsoft access driver (*.mdb)};这句语句是access的驱动

dbq="&server.mappath("xhnew.mdb")这句是数据库的路径

建立conn.asp是为了方便接下来的教学。。。

我们可以任何要用到打开数据库连接的文件里加

<!--#include file="conn.asp"-->就可以调用

是不是很方便。第一个小时就学这么多。。。当你弄明白上面的数据库还有代码后。。

就继续跟着我学吧!

(第2个小时)

现在来学把数据库的信息输出来

下面先建立一个主文件index.asp

代码如下

CODE:

<!--#include file="conn.asp"-->

<%

exec="select * from aa order by id desc "

set rs=server.createobject("adodb.recordset")

rs.open exec,conn,1,1

%>

<table width="628" height="24" border="1" align="center" cellpadding="1" cellspacing="0">

<%

if rs.eof and rs.bof then

response.write("暂时没有文章")

else

do while not rs.eof

%>

<tr>

<td width="66" height="22" ><%=rs("id")%></td>

<td width="66" ><%=rs("name")%></td>

<td width="66" ><%=rs("content")%></td>

<td width="273" ><%=rs("xhtime")%></td>

<td width="53" ><%=rs("title")%></td>

<td><a href="modify.asp?id=<%=rs("id")%>" target="_self">编辑</a></td>

<td width="32" ><a href="del.asp?id=<%=rs("id")%>">删除</a></td>

</tr>

<%

rs.movenext

loop

end if

%>

</table>

<%

rs.close

set rs=nothing

conn.close

set conn=nothing

%>

<td><a href="add.asp">添加</a></td>

[Copy to clipboard]

代码解释:

(1)<%

exec="select * from aa order by id desc "

set rs=server.createobject("adodb.recordset")

rs.open exec,conn,1,1

%>

上面的代码是创建一个recordset对象。。该对象是用来打开数据库中的表的。。也就是打开aa

exec="select * from aa order by id desc " 这句的意思是查找表aa中所有信息并倒序排列

信息. *号表示aa中所有的信息 order by id 就是aa中id字段 desc 是倒序的意思

rs.open exec,conn,1,1 这句话的意思是用recordset对象来打开conn中的表

(2)

<%

if rs.eof and rs.bof then

response.write("暂时没有文章")

else

do while not rs.eof

%>

上面是if语句。。if else语句是相当重要的。。

希望一些初学者要认真的研究一下if else语句。。不可心急。基础才是硬道理

rs.eof 的意思是aa表中的最后一条记录 那么rs.bof就是第一条记录

整个语句用中文翻译就是 当aa表中的最后和最前一条信息没有的时候。。就输出暂时没有文章

或则就循环到eof最后一条信息。。

(3)<tr>

<td width="66" height="22" ><%=rs("id")%></td>

<td width="66" ><%=rs("name")%></td>

<td width="66" ><%=rs("content")%></td>

<td width="273" ><%=rs("xhtime")%></td>

<td width="53" ><%=rs("title")%></td>

<td><a href="modify.asp?id=<%=rs("id")%>" target="_self">编辑</a></td>

<td width="32" ><a href="del.asp?id=<%=rs("id")%>">删除</a></td>

</tr>

上面的代码比较容易理解。。<%=rs("id")%>这个用法是输出数据库字段id..

<a href="modify.asp?id=<%=rs("id")%>" target="_self">编辑</a>这段很重要。。

我来解释一下。。在ie窗口点 编辑 的时候。。页面会跳转到modify.asp的文件里的id

并进行相应的处理。。这里很难解释清楚。。在接下来的例子中再慢慢解说

(4)

<%

rs.movenext

loop

end if

%>

这句是循环结束的语句

rs.movenext 这句是游标向下指的意思

(5)

<%

rs.close

set rs=nothing

conn.close

set conn=nothing

%>

这句是关闭数据库的语句

用完数据库后要记得关闭数据库。。以免占用资源

养成随手关门的好习惯

就学到这里。。好好消化上面的代码。。心急吃不了热豆腐。。

一步一个脚印最塌实。。

(第3个小时)

现在来学添加数据到数据库 需要两个文件来实现

(1)先建立一个提交表单add.asp

代码如下:

CODE:

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title>无标题文档</title>

</head>

<body>

<form name="form1" method="post" action="add_new.asp">

名字 <input type="text" name="name"><br>

备注 <input type="text" name="content"><br>

题目<input type="text" name="title" ><br>

<input type="submit" name="Submit" value="提交">

<input type="reset" name="Submit2" value="重置">

</form>

</body>

</html>

[Copy to clipboard]

上面代码要注意的是action="add_new.asp"提交到add_new.asp文件

还有name="name" name="content" name="title" 名字要对应

(2)处理文件add_new.asp

代码如下:

CODE:

<!--#include file="conn.asp"-->

<%

name=request.form("name")

content=request.form("content")

title=request.form("title")

exec="insert into aa(name,content,title) values(&apos;"+name+"&apos;,&apos;"+content+"&apos;,&apos;"+title+"&apos;)"

conn.execute exec

conn.close

set conn=nothing

response.redirect "index.asp"

%>

代码解释:

(1)

name=request.form("name")

content=request.form("content")

title=request.form("title")

这三句语句是接收add.asp发来的信息。。request.form("name")就是对应add.asp中的name="name"

(2)

exec="insert into aa(name,content,title) values(&apos;"+name+"&apos;,&apos;"+content+"&apos;,&apos;"+title+"&apos;)"

conn.execute exec

上面的语句是数据库插如信息的语句

insert into aa(name,content,title) 中文意思是插入信息对应aa表中的三个字段

三个字段的数值是values(&apos;"+name+"&apos;,&apos;"+content+"&apos;,&apos;"+title+"&apos;) 这里面对应的值是

这三句语句

name=request.form("name")

content=request.form("content")

title=request.form("title")

传递的

(3)

conn.close

set conn=nothing

response.redirect "index.asp"

关闭数据库。。写如成功后自动转页面到index.asp

到这里相信你已经学会如何添加新记录到数据库了。。

那就跟着我接着学吧。。。

(第4个小时)

接下来我们来学删除数据库信息。。。

删除信息比较简单。。只需要一个文件del.asp

代码如下:

CODE:

<!--#include file="conn.asp"-->

<%

exec="delete * from aa where id="&request.querystring("id")

conn.execute exec

conn.close

set conn=nothing

response.redirect "index.asp"

%>

代码解释:

exec="delete * from aa where id="&request.querystring("id")

conn.execute exec

先翻译成中文意思

删除表aa中id字段的值。。这个值等于="&request.querystring("id")

还记得我们建立index.asp文件的时候吗?里面有段语句是这样的

<td width="32" ><a href="del.asp?id=<%=rs("id")%>">删除</a></td>

大家现在看明白了吧!你们这么聪明。。一定明白了。

我再补充说两句

当我们点击删除的时候。。。这个时候就会连接到del.asp做处理。。

而同时del.asp接收到我们的请求是通过"&request.querystring("id")这句语句

然后conn.execute exec 这条语句就执行删除。。

整个流程就是这样。。。

希望学习的人好好弄清楚。。那样我们才可以继续学习修改

(第5个小时)

现在学习数据的修改。 这是难点。。大家要认真的跟着我学。。

本人也是看了很久才学会的。。解释的不好多多包容。。

修改需要两个文件

(一)建立modify.asp 和del.asp很像似

代码如下:

CODE:

<!--#include file="conn.asp"-->

<%

exec="select * from aa where id="&request.querystring("id")

set rs=server.createobject("adodb.recordset")

rs.open exec,conn,1,1

%>

<form name="form1" method="post" action="modifysave.asp">

<table width="748" border="0" cellspacing="0" cellpadding="0">

<tr>

<td>name</td>

<td>content</td>

<td>title</td>

</tr>

<tr>

<td>

<input type="text" name="name" value="<%=rs("name")%>">

</td>

<td>

<input type="text" name="content" value="<%=rs("content")%>">

</td>

<td><input type="text" name="title" value="<%=rs("title")%>">

<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

%>

代码解释:

(1)

<%

exec="select * from aa where id="&request.querystring("id")

set rs=server.createobject("adodb.recordset")

rs.open exec,conn,1,1

%>

这句exec="select * from aa where id="&request.querystring("id")我在del.asp里解释过了

在这里也是一样的道理

set rs=server.createobject("adodb.recordset")

rs.open exec,conn,1,1

上面是用recordset对象打开数据表。。。

(2)

<input type="text" name="name" value="<%=rs("name")%>">

这里要注意名字要对应。。否则或出错。。

<input type="hidden" name="id" value="<%=request.querystring("id")%>">

这里是隐藏表单。。。提交隐藏的表单元素会随着表单一起提交,用于传递变量

(二)建立modifysave.asp 文件

代码如下:

CODE:

<!--#include file="conn.asp"-->

<%

exec="select * from aa where id="&request.form("id")

set rs=server.createobject("adodb.recordset")

rs.open exec,conn,1,3

%>

<%

rs("name")=request.form("name")

rs("content")=request.form("content")

rs("title")=request.form("title")

rs.update

rs.close

set rs=nothing

conn.close

set conn=nothing

response.redirect"index.asp"

%>

代码解释:

(1)

rs("name")=request.form("name")

rs("content")=request.form("content")

rs("title")=request.form("title")

这三句话的意思是数据库中的rs("name")的值等于接收到request.form("name")的值

request.form("name")的值是从modify.asp传递来的。。

(2)

rs.update 这句语句是更新数据库里的信息的意思 就是把提交的信息上传到数据库

aspAsp连接access添加,删除,修改已经都教完了

许多大的系统如新闻发布系统都是在这个基础上建立的

希望大家能学有所成。

上两篇中作者给大家介绍了 AD Rotator、 Database Access 等组件的使用方法,今天我们接着来看看其它的一些 ASP 常用组件。

一、 Browser Capabilities 组件众所周知,并不是所有浏览器都支持现今 Internet 技术的方方面面。有一些特性,某些浏览器支持而另一些浏览器却不支持,如 : ActiveX 控件、影像流、动态 HTML、 Flash 以及脚本程序等。使用 ASP 的 Browser Capabilities 组件,就能够设计“智能”的 Web 页,以适合浏览器性能的格式呈现内容。 Browser Capabilities 组件能够创建一个 BrowserType 对象,该对象提供带有客户端网络浏览器的功能说明的用户脚本。该组件之所以能识别客户浏览器的版本等信息,主要是因为当客户浏览器向服务器发送页面请求时,会自动发送一个 User Agent HTTP 标题,该标题是一个声明浏览器及其版本的 ASCII 字符串。 Browser Capabilities 组件将 User Agent 映射到在文件 Browscap.ini 中所注明的浏览器 , 并通过 BrowserType 对象的属性来识别客户浏览器。若该对象在 browscap.ini 文件中找不到与该标题匹配的项,那么将使用默认的浏览器属性。若该对象既未找到匹配项且 browscap.ini 文件中也未指定默认的浏览器设置,则它将每个属性都设为字符串 "UNKNOWN"。在默认情况下, browscap.ini 文件被存放在 WINDOWS\\SYSTEM\\INERSRV( 如果是 95/98+PWS4) 或 NT\\SYSTEM32\\INERSRV( 如果是 NT) 目录中,你可以自己编辑这个文本文件,以添加自己的属性或者根据最新发布的浏览器版本的更新文件来修改该文件。请看以下 checkCookie() 过程,使用 BrowserCap 对象的 Cookie 属性来判断客户端浏览器是否支持 Cookie,并返回信息 :

< %

Sub checkCookie()

Set BrowserCap=Server.CreateObject("MSWC.BrowserType")

if BrowserCap.Cookie=True then

response.write "你的浏览器支持 Cookie!"

else

response.write "对不起,你所使用的浏览器不支持 Cookie!"

end if

end Sub

%>

二、 File Access 组件如果你的网龄足够大的话,你一定见过“恐龙时代”的 CGI 留言簿,那是 WEB 留言簿最早的雏形。那时候在基于 Internet 的 WEB 应用程序中连接服务器后端数据库还十分困难,因此留言簿中的历史信息并不是同如今一样存储在后端数据库中。那么这些数据究竟是保存在哪里的呢?答案就是“文本文件”, CGI 程序可以将从客户端接收的信息写进一个存放在服务器端的文本文件中,该文件可以是 HTML 文件或 TXT 等文件,这样就使得程序员们可以不通过同数据库连接就可以将客户信息保存下来,但是写此类 CGI 程序甚是烦琐,下面列出了一个此类程序的最简单的样本 :

#!/usr/local/bin/perl

# Perl Location one your server

print "Content-type: text/plain\\n\\n";

if($ENV{\'REQUEST_METHOD\'}eq"POST"){

read(STDIN,$buffer,$ENV{\'CONTENT_LENGTH\'});

}elsif($ENV{\'REQUEST_METHOD\'}eq"GET"){

$buffer=$ENV{\'QUERY_STIRNG\'};

}

@pairs=split(/&/,$buffer);

foreach $pair(@pairs){

($name,$value)=split(/=/,$pair);

$value=~tr/+//;

$value=~s/%([a-f A-F 0-9][a-f A-f 0-9])/pack("C",hex($1))/eg;

$FORM{$name}=$value;}

$file_name="guestbook.txt";#File name

#具体内容

open(FILE,">>$file_name")||die "打开文件错误";

print FILE "记录时间":$date \\n\\n";

print FILE "姓名":$FORM{\'name\'}";

print FILE "单位":$FORM{\'company\'}\\n";

print FILE "电话":$FORM{\'phone\'}

print FILE "地址":$FORM{\'address\'}\\n";

print FILE "邮编":$FORM{\'zip\'}

print FILE "邮件地址":$FORM{\'email\'}\\n";

print FILE "返回意见":$FORM{\'content\'}

close (FILE)

大家可以感觉到,与 ASP 相比此类 CGI 程序的可读性和易操作性都较差。那么你一定想问 ASP 是否也能直接在服务器上写文件呢?答案当然是肯定的。但是聪明的朋友可能会想到,既然 ASP 同 WEB 数据库的连接如此便捷,我们又何需再将客户信息写在文本文件中呢, ASP 的这个功能岂不是画蛇添足?的确,对于那些我们常见的留言簿、 BBS 等 WEB 应用程序而言,无论是在程序的执行效率还是易用性上,我们都不可能再用写文本文件来替代数据库,但是在某些 WEB 应用领域里写文本文件既是一种规范也是一种相对数据库而较便捷的方法。如果你对 NT 较熟悉的话,你一定知道 NT 具有非常强大的安全机制,它可以将几乎所有的服务器操作和连接的信息自动保存在一个后缀名为 .log 的文件中,其实这种技术也完全可以被运用在 WEB 上,用来记录一些的客户登陆信息。下面的这段程序正是利用 ASP 读写文本文件的特性,在一个 WEB BBS 程序中创建自动记录每个用户发言记录的功能。

< %

Set fs = CreateObject("Scripting.FileSystemObject")

ForReading = 1

\'以只读模式打开文件。不能对此文件进行写操作。

ForAppending = 8

\'打开文件并在文件末尾进行写操作。

TristateUseDefault = -2

TristateTrue = -1

TristateFalse = 0

\'-----------写入系统log开始--------

servermap=server.MapPath("\\bbs\\log\\")

\'映射系统物理路径

temp=servermap&"\\"&year(date)&month(date)&"\\"

\'获取系统物理路径和时间,并以此作为log文件存放的物理路径

if Not fs.FolderExists(temp) then

fs.CreateFolder(temp)

end if

\'检测是否存在文件夹,否则自动创建

dim syslog

dim tempname

tempname=date

syslog=temp&tempname&".log"

\'文件名为e:\\bbs\\log\\月份\\月日.log

li=user&"&"&Now&"&"&Request.ServerVariables("REMOTE_ADDR")&"&"&tempfile&"&"&letter&"&"&title

\'log文件记录的格式为:用户名&发信时间&用户ip&文件路径&信区&信件标题

if fs.FileExists(syslog) then

Set ss = fs.OpenTextFile(syslog,ForAppending,true)

else

set ss = fs.CreateTextFile(syslog,ForWriting,false)

end if

\'检测log文件是否存在,如果存在则追加文件内容,反之则直接写文件

ss.WriteLine(li)

ss.Close

\'-----------log文件写入结束---------

%>

如果你没有完全看懂上面的这段程序,就请听作者慢慢道来。 File Access 组件提供了可用来访问计算机文件系统的方法和属性。我们可以使用 File Access 组件创建 FileSystemObject 对象,以上程序的第一句就是利用 File Access 组件创建了一个名为 fs 的对象实例。在对象被创建后,你可以通过它访问文件,该对象没有属性,它唯一的意义就是创建、打开或读写文本文件。 FileSystemObject 对象有两种最常用的方法,一种用来创建文件,另一种是用来打开并读写文本文件。 CreateTextFile 方法获得你指定的文件名并创建该文件,它返回一个 TextStream 对象,你可以用该对象在文件被创建后操作该文件, CreateTextFile 方法的语法如下 :

Set objTextStream=FileSystemObject.CreateTextFile(Filename,[Overwrite],[Unicode])

下面作者给大家解释一下 CreateTextFile 方法的参数

1、 Filename 包含文件路径名的字符串,可以是文件的全路径名,包括驱动器名和目录名,或者也可以只是文件名,如果只包含文件名的话,文件将被创建在站点的根目录下。

2、 Overwrite 布尔量,设置成 False 时可以防止 FileSystemObject 对象在创建一个新文件时删除已存在的文件,该参数是可选的,如果没有赋值系统默认为 true,具有相同文件名的已有文件会被删掉。

3、 Unicode 可选参数。布尔值指明是否以 Unicode 或 ASCII 文件格式创建文件。如果以 Unicode 文件格式创建文件,则该值为 True;如果以 ASCII 文件格式创建文件,则该值为 False。如果省略此部分,则假定创建 ASCII 文件。

在前面的程序中我们用 set ss=fs.CreateTextFile(syslog,ForWriting,false) 来在 log 文件不存在的情况下创建文件并对文件进行写操作,这里的“ForWriting”表示写文件。

与 CreateTextFile 方法不同, OpenTextFile 方法用来获得你指定的文件名并打开该文件,利用它所带的参数我们可以对文件进行各种不同的操作,和 CreateTextFile 方法一样, OpenTextFile 方法返回一个 TextStream 对象,使得你可以在文件被打开后操作该文件。 OpenTextFile 方法的语法如下 :

Set objTextStream=FileSystemObject.OpenTextFile(Filename,[IOmode],[Create],[Format])

参数说明如下 :

1、 Filename 必须的变量,同 CreateTextFile 的 filename

2、 IOmode 可选的常量,取值为下列两个常数之一 ForReading 或 ForAppending,如果 mode 为 1,文件以只读方式打开,如果为 8,则文件以追加的方式打开。

3、 Create 可选的布尔量,指定如果你想打开的文件不存在是做什么操作,如果其值为 True,当文件不存在时就自动创建一个空的文件。如果为 False,就会在文件没找到时产生一个出错信息,其默认值是 False,建议将其设为 True,以避免在打开文件时检查是否出错。

4、 Format 可选值,可以选择三种 Tristate 值分别指定文件的格式, -2、 -1、和 0 分别对应于系统缺省、 unicode 和 ASCII。

在打开或创建了文本文件后,就得到一个 TextStream 对象,该对象有一个光标,就好象是在字处理程序中的光标一样,指出接下来要敲入的字符将出现的位置,它同时也指出你要读取的字符的位置。不能通过 CreatObject 来创建一个 TextStream 对象,得到 TextStream 对象的唯一方法是如前所述的用 FileSystemObject 对象打开一个存在的文本文件或者创建一个新的文件。

下面列出了 TextStream 对象的属性和方法

TextStream.AtEndOfLine 只读布尔量,当光标在当前行的末尾时,其值为 true,反之则为 false

TextStream.AtEndOfStream 只读布尔量,如果光标在流的末尾时,其值为 true,否则为 false

TextStream.Column 只读的整数,统计从行首到当前光标位置之间的字符数

TextStream.Line 只读的整数,指明光标所在行在整个文件中的行号

TextStream.close() 关闭流以及对应的文本文件

TextStream.read(Num) 指定从光标的当前位置开始从文本文件中读取一定数目的字符

TextStream.readall() 将整个流读入一个字符串中

TextStream.readline() 将一整行的字符读入一个字符串中

TextStream.write(text) 将一个字符串写入流中

TextStream.writeline() 将一个文本串写入流中

TextStream.skip(Num) 在流中,将光标的位置移动一定数目的字符串长度

TextStream.skiplines() 在流中,将光标移动一定数目的行数

TextStream.writeblank 将一定数目的空行写入流中

lines(num)

相信大家现在已经可以感觉到 ASP File Access 组件的强大功能了,其实它远不仅仅可以写一些 log 文件,通过它你甚至可以毫不费力的远程自动更新你的网站,你只要把固定格式的文本文件传送到远端的服务器上,通过 File Access 组件读取文件,并自动生成全新 HTML 页面即可,而不必再辛辛苦苦地一个一个地更新 HTML 文件。如果你有兴趣,你完全可以用 ASP 的 File Access 组件写一个自己的全自动 HTML 生成器,充分享受维护网站的超前轻松感。

三 : asp连接access 2007与 access 2003数据库的conn代码

asp连接access 2007与 access 2003数据库的conn代码

随着微软发布ms access 2007,原来使用asp访问access2003的连接语句:

例如连接一个当前目录下的#site.mdb文件可用

Set conn=Server.CreateObject("ADODB.CONNECTION")

conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &amp; Server.MapPath("#site.mdb")’此处路径页可使用绝对路径,例如

‘Data Source=E:\test.accdb

也需要改成:

Set conn=Server.CreateObject("ADODB.CONNECTION")

conn.open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" &amp; Server.MapPath("#site.accdb")’此处路径页可使用绝对路径,例如

‘Data Source=E:\test.accdb

      可以看出,Access2007在数据格式上有很大变化,它的Provider(提供商)也有改动.驱动号也不同! 注意access 2007和以前的access 2003连接字符串有三个明显不同的地方:

Provider部分由Microsoft.Jet.OLEDB变成了Microsoft.ACE.OLEDB
以前的jet4是连接不上的;

驱动版本号由4.0变成了12.0

数据库的扩展名变为accdb而非mdb

同时,如果由ACCESS2007转到ACCESS2003,则需要注意检查系统中是否安装了microsoft.jet.oledb数据源驱动,如果没有,则按照如下方法进行安装:

先安装MDAC 2.7,如果没有安装的话是不可能运行ACCESS的。[www.61k.com)在安装目录WCU文件夹下面应该有MDAC的安装包,还有就是你的驱动申明应该使用 “microsoft.jet.oledb.4.0”;MDAC 2.7做成打包文件以后选择jet引擎,安装以后就行了。

同样的道理,如果由ACCESS2003转到ACCESS2007,则也要检查系统中是否安装了microsoft.ace.oledb驱动。

驱动是连接应用程序与底层数据源的桥梁,里面封装了各种增删改查以及备份或还原的函数;如果没有驱动,aspasp.net甚至java将无法直接访问access底层数据源。

在asp访问access时,需要将WINDOWS/TEMP目录的权限设置为everyone,否则asp将无法访问access,访问时会出现80045……之类的错误,微软竟然将数据库内容放到根目录下的临时文件夹中,难怪漏洞很多!

四 : ASP.net与SQLite数据库通过js和ashx交互(连接和操作)

ASP.net与SQLite数据库通过js和ashx交互(连接和操作):

废话(也是思路):用的是VS2010,打算做网站前后台。由于不喜欢前台语言里加些与html和css和js的其他内容,想实现前后台语言的分离,与前后台通过js的ajax实现交互,故很多百度出来的方法不成立,虽听说ashx过时,但是他实现了我要的效果:即前后台语言不是相互嵌入实现交互,而是通过js实现(有接口就可以)。

由于领导指定用SQLite,故这两天还折腾了SQLite,不过对于这种小型的网站,它是个很好的选择(不需要部署,只需在官网下载.net的,然后在项目中引用,在Web.config里进行设置,即可操作——当然还有一些错误和注意事项要注意),总的说来,我用ashx和js的ajax实现前后台的交互,后台与SQLite数据库连接——1.通过引用System.Data.SQLite.dll;2.在界面主文件夹下添加SQLite.Interop.dll为链接;3.Web.config文件配置;4.SQLiteHelper.cs编写,ashx调用执行(可划分DAL进行分类建cs,便于管理)。

好处:实现前后台语言的分离,不用部署,不用曾经的SQLSERVER 的Model(get和set组成的东西)即可完成数据读写(此处不管连接SQLSERVER的ADO)——暂时想到也知道这么一点,仅供参考。

 正文:

一、ashx和js的ajax实现前后台的交互:

文件路径如图一,js会在product.html里引用,故连接ashx的路径,是相对product.html的路径,js代码如下:

 $(document).ready(function () {  $.ajax({  url: '../InterSQLite/demo.ashx',  type: 'post',  datatype: 'json',  cache: false,  async: false,  success: function (data) {  alert(data);  }  }) }) 

ashx代码如下:(主要起作用的是:context.Response.Write(strjson);)

 using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MvcAdmin.InterSQLite {  /// <summary>  /// demo 的摘要说明  /// </summary>  public class demo : IHttpHandler  {  public void ProcessRequest(HttpContext context)  {  // string strjson = "[ {"userName":"test"}]";  context.Response.ContentType = "text/plain";  string str2 = "测试";  // string strjson = "[ {"userName":"test"}]";  string strjson = "[ {"userName":"" + str2 + ""}]";  context.Response.Write(strjson);  }  public bool IsReusable  {  get  {  return false;  }  }  } } 

这一部分请注意:1.发布要在本地(我测试的发布在别的服务器,前台接收不到)

        2.IIS配置(打开本机的IIS——>配置):

可参考

二、后台与SQLite数据库连接:

1.通过引用System.Data.SQLite.dll;

在官网选择适应电脑系统的.net的System.Data.SQLite.dll的下载:/doc/trunk/www/downloads.wiki

安装后,有个测试的,点击(如下图1),选择“System.Data.SQLite”(默认的),改变“Data Source=已建好的SQLite数据库.db文件相对刚刚安装的bin目录的路径”(例如我安装的bin目录是:C:Program Files (x86)System.Data.SQLite2010bin,我的数据库文件在C:cfftest下,则我的Data Source=../../../../cff/test/test.db),改好后,点击“run”,如下图2,则说明安装成功

此处个人碰到一个问题:需要为数据库所在的上层目录设置权限才能全部Succeeded。错误如下:attempt to write a readonly datebase

解决办法:找到SQLite数据库所在的文件夹,单击右键,属性->安全,为Users用户组添加写入权限。这个就不截图了。

2.在界面主文件夹下添加SQLite.Interop.dll为链接;

放错了或没有添加链接,就会出现错误:无法加载 DLL“SQLite.Interop.DLL”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。

添加正确后如下图所示:

3.Web.config配置:

  <connectionStrings>  <add name="DB_XHKSQLite" connectionString="Data Source=相对安装目录的路径(测试成功的路径);Pooling=true;FailIfMissing=false" providerName="System.Data.SQLite"/>  </connectionStrings>

4.SQLiteHelper.cs获取connectionString,操作(读取)数据库:

复制代码 代码如下:


string str = System.Configuration.ConfigurationManager.ConnectionStrings["DB_XHKSQLite"].ToString();

         

“[]”里的参数与Web.config的connectionStrings的add的name相对应。

另外除了下载工具创建数据库外,还可以参考: 用C#代码创建,并操作SQLite数据库(此方法未实践,因为我用SQLite Expert Personal 4.1 的图形化界面实现的,此软件界面如下图所示:)

对于初期的测试,建议用下面内容:

(在类库下此处记得引用System.Configuration,因为默认下他不被引用,当然对于面对VS2010错误的你,应该自己会发现的,别的细节就忽略了,我忘了还有什么细节了)

从数据库获取的数据时dataset的,此处把它变成datatable,再转成json传给前台。

下面是js需要调用的ashx文件的主干内容:

 //这是获取连接字符串  string str = System.Configuration.ConfigurationManager.ConnectionStrings["DB_XHKSQLite"].ToString();  DataSet ds = new DataSet();  //声明一个Sqlite数据库的链接  using (SQLiteConnection conn = new SQLiteConnection(str))  {  //创建sqlite命令  using (SQLiteCommand comm = conn.CreateCommand())  {  //打开数据库链接  conn.Open();  //select数据分页用limit就行,很方便  comm.CommandText = "Select * From book";  using (SQLiteDataAdapter adapter = new SQLiteDataAdapter(comm))  {  adapter.SelectCommand = comm;  adapter.Fill(ds);  }  DataTable dt = new DataTable();  dt = ds.Tables[0];  // Common.Common ff = new Common.Common();  string strjson = Common.Common.DataTableToJson(dt, 1);  context.Response.Write(strjson);  }  } 

Common.Common.DataTableToJson代码:(按实际需要改格式)

 public static string DataTableToJson(DataTable dt, int count)  {  StringBuilder sbjson = new StringBuilder();  sbjson.Append("{");  sbjson.Append(""total":" + count + ","rows":[");  if (dt != null)  {  for (int i = 0; i < dt.Rows.Count; i++)  {  if (i > 0)  {  sbjson.Append(",");  sbjson.Append("{");  foreach (DataColumn dc in dt.Columns)  {  if (dt.Columns.IndexOf(dc) > 0)  {  sbjson.Append(",");  sbjson.Append(""" + dc.ColumnName + "":"" + dt.Rows[i][dc.ColumnName].ToString().Trim() + """);  }  else  {  sbjson.Append(""" + dc.ColumnName + "":"" + dt.Rows[i][dc.ColumnName].ToString().Trim() + """);  }  }  sbjson.Append("}");  }  else  {  sbjson.Append("{");  foreach (DataColumn dc in dt.Columns)  {  if (dt.Columns.IndexOf(dc) > 0)  {  sbjson.Append(",");  sbjson.Append(""" + dc.ColumnName + "":"" + dt.Rows[i][dc.ColumnName].ToString().Trim() + """);  }  else  {  sbjson.Append(""" + dc.ColumnName + "":"" + dt.Rows[i][dc.ColumnName].ToString().Trim() + """);  }  }  sbjson.Append("}");  }  }  }  sbjson.Append("]}");  return sbjson.ToString();  } 

这是本人3天的摸索,感谢网上的各种资料,还有师父的远程帮助,谨以此总结献给有需要的你,希望你能更快地实现前后台的交互,若有误导请原谅!

总结:运行程序好像不仅仅是代码的事(当然,如果你够厉害应该都可以用代码实现),他有时需要与图形界面结合,设置权限等等,在一系列实现事情的过程中,逐一排查,才会呈现你想要的效果。——这是一个需要耐心的过程,这也是一个对未知的探索过程。加油!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持61阅读。

本文标题:asp连接access数据库-asp和access的链接
本文地址: http://www.61k.com/1092321.html