用ASP连接读写ACCESS数据库实例(转)

(一)   数据库的选择:

有许多的数据库你可以选择,SQL SERVER、ACCESS(*.mdb)、EXCEL(*.xls)、FOXPRO(*.dbf)甚至普通的文本文件(*.txt)都可以达到存储数据的功能。那么到底选择什么数据库最合适呢?其中SQLSERVER是服务器级的,足以应付每天上万次的访问量。对于非服务器级的数据库建议使用ACCESS97。

因为:
(1)只要安装了PWS或IIS4肯定有ACCESS的ODBC驱动,即你的系统肯定支持ACCESS数据库的存取。
(2)ACCESS支持的SQL指令非常齐全。
(3)ACCESS ODBC驱动程序的效率非常高。虽然它不是服务器级的数据库,但是作为中小型企业内部网的数据库支持还是绰绰有余的。
(4)ACCESS97在OFFICE97中就有,非常方便得到和使用。

本文就以ACCESS数据库为准介绍基于WEB的数据库存取方法。

(二)例子:我们建立一个“客户”数据库,需要保存如下的客户资料:客户名称、联络人姓名、所在城市、电话号码。

(1)首先建立ACCESS数据库customer.mdb(今后有用的)。
      建立如下字段:客户名称、联络人姓名、所在城市、电话号码、客户编号、时间。将表保存为"客户"(今后有用的,===>看看图)。注意:建立字段时多作了2个(客户编号、时间),因为在今后排序时要用到它们。建议今后做数据库时最好都加上这2项,不会没用的。此外,在保存表时ACCESS会询问是否建立一个住关键字,我们不需要它所以不必建立。还有:时间字段的"默认值"设成"now()",即去系统当时的时间。同时将索引项设成"有(允许重复)",含义:WEB上极有可能同时存取数据,所以允许重复,索引设成"有"可以加快排序速度。===>看看图

(2)建立递交表单add.htm:

源代码如下:

<html>
<head>
<title>添加数据库记录</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#FFFFFF">
<p align="center"><font size="5">添加数据库记录</font></p>
<form method="post" action="adddatabase.asp">
<div align="center">
<table width="46%" border="0">
<tr>
<td width="28%">
<div align="right">公司名称: </div>
</td>
<td width="72%">
<input type="text" name="CompanyName">
</td>
</tr>
<tr>
<td width="28%">
<div align="right">联络人姓名: </div>
</td>
<td width="72%">
<input type="text" name="CName">
</td>
</tr>
<tr>
<td width="28%">
<div align="right">所在城市: </div>
</td>
<td width="72%">
<input type="text" name="City">
</td>
</tr>
<tr>
<td width="28%">
<div align="right">电话号码:</div>
</td>
<td width="72%">
<input type="text" name="Tel">
</td>
</tr>
<tr>
<td width="28%">
<div align="right"> </div>
</td>
<td width="72%">
<input type="submit" name="Submit" value="Submit">
<input type="reset" name="reset" value="Reset">
</td>
</tr>
</table>
</div>
</form>
</body>
</html>

这与普通的HTML没有任何区别,关键部分已经用红色标记了。递交方法用POST,递交后处理的程序是adddatabase.asp(下一步就重点讨论它)。

(3)关键部分:建立与数据库的联系并将表单中收集到的信息添加到ACCESS数据库中。

ASP代码放在〈%和%>之间。

adddatabase.asp程序内容:

<%
CompanyName =Request("CompanyName")
CName =Request("CName")
City =Request("City")
Tel = Request("Tel")
%>
    以上,首先取得表单中填写的数据,使用ASP的Request对象非常容易可以实现数据的收集。双引号中的就是上个文件中建立的各个输入框中的名字红色部分(NAME=。所以今后为每个输入框起名字是个好习惯,尽管有时候并不一定用得到。这样取得的数据就保存在等号坐侧的变量中了。

If CompanyName ="" Or CName = "" Or City = "" Or Tel ="" Then
Response.Write"<html><body><center><font size=5>请将资料填写完整。</font></center></body></html>"
'Response.Redirect"error.htm"
Response.End
End If

这里是检测各个项目是否输入了东西,如果为空则不往下继续执行,显示错误信息。注意:你可以使用两种方法。我都列出了。
方法一:使用Response.Write方法写一个出错页面,类似于java scripts的document.write写法,只是ASP使用Response.write罢了。
方法二:使用Response.Redirect方法导向出错页面error.htm。我在方法一的代码前加上单引号表示注释。('ASP中表示注释用单引号')。

<%
setdbconnection=Server.CREATEOBJECT("ADODB.CONNECTION")
DBPath =Server.MapPath("customer.mdb")
dbconnection.Open"driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
%>

程序解释:
(1)建立Connection对象:dbconnection,建立一个连接(Connection)是数据库存取的开始。我们使用ASP的内建对象方法Server.Createobject建立与数据库的连接。ADODB是ASP的数据库存取组件,不必担心只要有ASP就有它了,是内置的。
(2)使用dbconnection.open方法打开数据库customer.mdb。driver参数语法: driver={Microsoft Access Driver (*.mdb)}必须这么写。告诉系统使用ACCESS ODBC驱动处理。dbq参数用来指定打开的数据库文件,它必须是完整的路径。例如"c:\inetpub\wwwroot\customer\customer.mdb",我们使用Server.MapPath的方法取得数据库的完整路径。  

<%
Set rs =Server.CreateObject("ADODB.Recordset")
%>

建立Recordset对象rs。Connection仅仅是建立了与数据库间的连接,要存取数据还应该再建立Recordset对象。

rs.Open "客户", dbconnection,adOpenDynamic, 3

打开数据库中的表"客户"(客户是表名)。 语法:

rs.open 数据表名或SQL指令,已经建立的Connection对象(这里是dbconnection), 锁定类型

<%
rs.AddNew
rs("公司名称") =CompanyName
rs("联络人姓名") = CName
rs("所在城市") = City
rs("电话号码") = Tel
rs.Update
%>

用AddNew向数据库请求添加数据。最后用Update写入。注意:等号右侧的变量保存着用Request取得的表单数据。双引号内的就是数据库的字段,应该与数据库的一致啊。否则会出错的。这样变量内的数据就写入了数据库对应的字段内了。

Response.Write"<html><body><center><font size=5>祝贺,您的数据已经添加进数据库了!<p>"
Response.Write"<a href='viewdatabase.asp'>查看数据</a>"
Response.Write"</font></center></body></html>"

'写入成功后显示祝贺信息并建立查看数据库记录的连接。

%>

 

(4)显示/查看数据库记录:

<%
setdbconnection=Server.CREATEOBJECT("ADODB.CONNECTION")
DBPath =Server.MapPath("customer.mdb")
dbconnection.Open"driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath

'建立与数据库的连接,与上同。

SQL="select * from 客户 Order By 时间 DESC"
SETCustomerList=dbconnection.EXECUTE(SQL)
%>

    建立SQL查询语句,表示从"客户"表中查询所有记录,Order By 时间 DESC表示"按时间降序排序,"这样最后添加的信息再最上面显示。下面一句执行SQL查询并将结果返回给Recordset对象CustomerList。

<html>
<body>
<FONTSIZE="5"><center>数据库记录</center></FONT>
<CENTER>
<TABLE BORDER=1>
<tr>

<td>编号</td>
<td>公司名称</td>
<td>联络人姓名</td>
<td>所在城市</td>
<td>电话号码</td>
</tr>
<% DO WHILE NOTCustomerList.EOF %>

'检测记录是否到了最后一条。EOF表示End of File。

<TR>
<TD><%=CustomerList("客户编号") %></TD>
<TD><%=CustomerList("公司名称") %></TD>
<TD><% =CustomerList("联络人姓名")%></TD>
<TD><%=CustomerList("所在城市") %></TD>
<TD><%=CustomerList("电话号码") %></TD>
</TR>

<%=CustomerList("客户编号") %>可以说是Response.Write方法的简写。将"客户编号"字段内的数据写入TD标签间。

<%

CustomerList.movenext

loop

%>

如果还没有到最后一条则指针移动到下一条。用Do While ... Loop循环逐一取得所有的记录。

</TABLE>
</CENTER>


<center>
<inputtype="button" οnclick="java script:location.href='add.htm'"value="添加数据">
</center>
</BODY>
</HTML>

RS.OPEN SQL,CONN,A,B

A:

ADOPENFORWARDONLY(=0)
只读,且当前数据记录只能向下移动

ADOPENKEYSET(=1)
只读,当前数据记录可自由移动

ADOPENDYNAMIC(=2)
可读写,当前数据记录可自由移动

ADOPENSTATIC(=3)
可读写,当前数据记录可自由移动,可看到新增记录

B:

ADLOCKREADONLY(=1)
缺省锁定类型,记录集是只读的,不能修改记录

ADLOCKPESSIMISTIC(=2)
悲观锁定,当修改记录时,数据提供者将尝试锁定记录以确保成功地编辑记录。只要编辑一开始,则立即锁住记录。

ADLOCKOPTIMISTIC(=3)
乐观锁定 ,直到用Update方法提交更新记录时才锁定记录。

ADLOCKBATCHOPTIMISTIC(=4)
批量乐观锁定,允许修改多个记录,只有调用UpdateBatch方法后才锁定记录。

当不需要改动任何记录时,应该使用只读的记录集,这样提供者不用做任何检测。
对于一般的使用,乐观的锁定可能是最好的选择,因为记录只被锁定一小段时间,
数据在这段时间被更新。这减少了资源的使用。
===========================================================

 

数据库连接:

<%

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

conn.open "driver={microsoft access driver(*.mdb)};dbq="&server.mappath("数据库名")

%>

 

 

打开数据库:

exec="select * from 数据库表"

setrs=server.createobject("adodb.recordset")

rs.open exec,conn,1,1

参数1,1为读取

 

读取内容格式:<%=rs("字段")%>

 

添加记录处理程序:

<%

setconn=server.createobject("adodb.connection")

conn.open "driver={microsoft access driver(*.mdb)};dbq="&server.mappath("数据库名")

name=request.form("字段") name,tel,message为提交表单所设置的字段值

tel=request.form("字段")

message=request.form("字段")

exec="insert into 表名(字段)values('"+字段+"')"多个用逗号隔开

conn.execute exec 使用execute提交

conn.close

set conn=nothing

%>

 

搜索处理程序:

<%

name=request.form("字段") name,tel为提交表单所设置的字段值

tel=request.form("字段")

setconn=server.createobject("adodb.connection")

conn.open "driver={microsoft access driver(*.mdb)};dbq="&server.mappath("数据库名")

exec="select * from 表 where name='"+字段+"' and tel="+字段

setrs=server.createobject("adodb.recordset")

rs.open exec,conn,1,1

%>

'页面搜索到的内容导出来

<%

do while not rs.eof

%><tr>

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

<td><%=rs("tel")%></td>

<td><%=rs("time")%></td>

</tr>

<%

rs.movenext

loop

%>

 

删除记录处理程序:

<%

setconn=server.createobject("adodb.connection")

conn.open "driver={microsoft access driver(*.mdb)};dbq="&server.mappath("数据库名")

exec="delete * from 表名 where 编号="&request.form("id")

conn.execute exec

%>

 

 

修改记录处理程序:

<%

setconn=server.createobject("adodb.connection")

conn.open "driver={microsoft access driver(*.mdb)};dbq="&server.mappath("数据库名")

exec="select * from 表名 where 编号="&request.form("id")

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

rs.open exec,conn,1,3 '1,3为修改意思

rs("name")=request.form("字段") 'name,tel,message为提交表单所设置的字段值

rs("tel")=request.form("字段")

rs("message")=request.form("字段")

rs.update

rs.close

set rs=nothing

conn.close

set conn=nothing

%>

修改记录执行程序:输入ID号页面>>>导出相对应ID数据>>>>>>直接修改的处理程序

 

后台登陆处理程序例子:

<%

dim name,password

name=request.form("name")

password=request.form("password")

dim exec,conn,rs

exec="select *from 表名 where(name='"&字段&"' and password='"&字段&"')"

setconn=server.createobject("adodb.connection")

conn.open "driver={microsoft access driver(*.mdb)};dbq="&server.mappath("数据库名")

setrs=server.createobject("adodb.recordset")

rs.open exec,conn

if not rs.eof then

rs.Close

conn.Close

session("checked")="yes"

session("check")="right"

response.Redirect "index.asp"

else

session("checked")="no"

session("check")="wrong"

response.Redirect "login.asp"

end if

%>

 

每个后台页面加上:

<%if notsession("checked")="yes" then 'session里面定义一个checked字符串变量

response.Redirect "login.asp" 

else

%>

 

本篇文章来源于 黑客基地-全球最大的中文黑客站 原文链接:http://www.hackbase.com/tech/2009-11-11/57879.html


  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ASP.NET连接Access数据库的步骤如下: 1. 在Visual Studio中创建一个ASP.NET网站项目。 2. 在项目中添加一个Access数据库文件(.mdb或.accdb格式)。 3. 在Web.config文件中添加连接字符串,指定Access数据库文件的路径和名称。 4. 在代码中使用ADO.NET对象(如OleDbConnection、OleDbCommand、OleDbDataReader等)连接Access数据库,并执行相应的操作(如查询、插入、更新、删除等)。 例如,以下是连接Access数据库并查询数据的示例代码: string connectionString = "Provider=Microsoft.ACE.OLEDB.12.;Data Source=|DataDirectory|\\myDatabase.accdb"; using (OleDbConnection connection = new OleDbConnection(connectionString)) { connection.Open(); string sql = "SELECT * FROM myTable"; using (OleDbCommand command = new OleDbCommand(sql, connection)) { using (OleDbDataReader reader = command.ExecuteReader()) { while (reader.Read()) { string name = reader.GetString(); int age = reader.GetInt32(1); Console.WriteLine("Name: {}, Age: {1}", name, age); } } } } 注意:在 ### 回答2: ASP.NET是一个基于Microsoft .NET平台开发的Web应用程序框架,可以轻松实现与后台数据库连接Access数据库是微软公司开发的一种关系型数据库,广泛应用于小型企业和个人应用中。ASP.NET连接Access数据库需要以下步骤: 1. 安装Access数据库驱动程序(如果尚未安装),下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=54920 2. 打开Visual Studio,创建一个ASP.NET Web应用程序项目。在“解决方案资源管理器”中,右键单击项目名称,选择“添加”->“新项”,然后选择数据源。 3. 在“数据源配置向导”中,选择“数据库”,然后选定Access数据库文件的路径。 4. 接下来就是设置连接字符串,可以在“高级选项”中配置连接属性,如“Provider”、“Data Source”、“User ID”、“Password”等。如果连接成功,可以预览和测试数据源。 5. 在代码中使用SqlConnection对象打开连接。示例代码如下: protected void Page_Load(object sender, EventArgs e) { string connString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; using (SqlConnection conn = new SqlConnection(connString)) { conn.Open(); // 执行SQL语句 // ... } } 需要注意的是,在使用Access数据库时,有些特殊的语法和数据类型需要进行适当换。例如,Access中的布尔型数据使用“-1”表示True,使用“0”表示False;日期时间类型使用CDate()函数进行换,等等。 综上所述,ASP.NET连接Access数据库需要依次进行:启用数据库驱动程序、添加数据源、配置连接字符串、打开连接,并在代码中使用SqlConnection对象。在实际开发中,还需考虑到安全性、性能优化等因素,选择合适的工具和技术进行开发。 ### 回答3: ASP.NET 是 Microsoft 公司推出的一款 WEB 应用程序开发框架,可以使用 C# 或者 VB.NET 来进行编程。而 Access 数据库是一种轻量级的数据库,它可以创建在本地计算机中的数据库文件,因此在某些情况下 Access 是一个很好的选择。 ASP.NET 可以通过使用 ADO.NET 来连接 Access 数据库。ADO.NET 包含了访问数据的一些类和对象,以及将数据从数据源检索到数据集中的一些工具。以下是连接 Access 数据库的步骤: 1. 第一步是在项目中添加命名空间。可以使用 System.Data.OleDb 命名空间来连接 Access 数据库。 2. 第二步是创建连接对象。使用 OleDbConnection 对象来实现连接。在创建 OleDbConnection 对象时,首先需要指定 Access 数据库文件的路径。 3. 第三步是打开数据库连接。使用 Open 方法来打开数据库连接。 4. 第四步是执行 SQL 查询。可以使用 OleDbCommand 对象执行 SQL 查询。在执行查询时,需要指定查询语句和连接对象。 5. 第五步是关闭连接。在完成数据查询后,一定要关闭连接。可以使用 Close 方法来关闭连接。 下面是一个 ASP.NET 访问 Access 数据库的示例: ```C# using System.Data.OleDb; protected void Page_Load(object sender, EventArgs e) { string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\mydatabase.accdb;Persist Security Info=False;"; OleDbConnection connection = new OleDbConnection(connectionString); try { connection.Open(); string query = "SELECT * FROM MyTable"; OleDbCommand command = new OleDbCommand(query, connection); OleDbDataReader reader = command.ExecuteReader(); while (reader.Read()) { // 处理查询结果 } reader.Close(); } catch(Exception ex) { // 处理异常 } finally { connection.Close(); } } ``` 这份代码使用了 OleDbConnection 和 OleDbCommand 来连接数据库。它首先创建了一个连接对象,然后打开了连接,执行了指定的 SQL 查询,并将查询结果取到 OleDbDataReader 对象中。最后在 finally 块中关闭了数据库连接

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值