康柏仕电脑学院Microsoft Windows交流平台硬件及网络技术资料储存区 → asp与ACCESS数据库的连接及基本操作


  共有8404人关注过本帖树形打印复制链接

主题:asp与ACCESS数据库的连接及基本操作

帅哥哟,离线,有人找我吗?
轻轻风聆
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 家人主人
等级:管理员 帖子:2672 积分:26145 威望:0 精华:14 注册:2005/9/15
asp与ACCESS数据库的连接及基本操作  发帖心情 Post By:2020/2/22 12:35:50 [只看该作者]

①数据库连接的建立:
Ⅰ、没有密码的数据
< %
set cn=server.createobject("adodb.connection") *建立connecton对象,定义了一个adodb数据库连接组件
cn.open"provider=microsoft.jet.oledb.4.0;data source="&server.mappath("test.mdb") *打开数据库
% >
Ⅱ、设有密码的数据
< %
set cn=server.createobject("adodb.connection") *建立connecton对象,定义了一个adodb数据库连接组件
cn.open"provider=microsoft.jet.oledb.4.0;data source="&server.mappath("test.mdb")&";jet oledb:database password="&pwd *打开数据库
% >
②读取记录:
< %
set cn=server.createobject("adodb.connection")
cn.open"provider=microsoft.jet.oledb.4.0;data source="&server.mappath("test.mdb")
set rs=server.createobject("adodb.recordset") *建立connecton对象
sql="select * from table" *SQL语句
rs.open sql,cn,1,1 *执行上面的SQL语句,其中参数1,1代表读取;参数1,3代表修改记录
if not rs.eof then *如果没有到库底
response.write"< tr >"
for i=0 to rs.fields.count-1 *循环读取字段
resposne.write"< td >"&rs(i).name&"< /td >"
next
rs.movefirst *指针置于首记录
while not rs.eof
response.write"< tr >"
for i=0 to rs.fields.count-1 *循环读取记录
resposne.write"< td >"&rs(i)&"< /td >"
next
rs.movenext *指针下移一个记录
wend
end if
rs.close *关闭rs对像
set rs=nothing *释放rs对像
cn.close *……
set cn=nothing *……
% >
③写入记录:
< %
set cn=server.createobject("adodb.connection")
cn.open"provider=microsoft.jet.oledb.4.0;data source="&server.mappath("test.mdb")
cn.execute"insert into table(fields1,fields2,fields3,…)values(*"&变量1&"*,*"&变量2&"*,*"&变量3&"*,…)"
cn.close *关闭cn对像
set cn=nothing *释放cn对像
% >
④查询记录:
< %
set cn=server.createobject("adodb.connection")
cn.open"provider=microsoft.jet.oledb.4.0;data source="&server.mappath("test.mdb")
set rs=server.createobject("adodb.recordset")
sql="select * from table where fields1=*"&变量1&"* and fields2=*"&变量2&"*"
rs.open sql,cn,1,1
: *关闭对象
:
% >
⑤删除记录:
< %
set cn=server.createobject("adodb.connection")
cn.open"provider=microsoft.jet.oledb.4.0;data source="&server.mappath("test.mdb")
cn.execute"delect * from tablename where 条件"
% >
⑥更新记录:
< %
set cn=server.createobject("adodb.connection")
cn.open"provider=microsoft.jet.oledb.4.0;data source="&server.mappath("test.mdb")
Ⅰ、
set rs=server.createobject("adodb.recordset")
sql="update tablename set fields1=数值1 and fields2=数值2"
rs.open sql,cn,1,3
Ⅱ、
cn.execute"update tablename set fields1=数值1,fields2=数值2 where fields=条件"
Ⅲ、
set rs=server.createobject("adodb.recordset")
sql="select * from tablename where fields=数值2"
rs.open sql,cn,1,3
rs("fields1")=新数值1
rs("fields2")=新数值2
rs.update
% >
以下是数据库的常用技巧:
1、设置最多返回条数:
有时候符合查询的记录可能有很多条,但我们并不需要查看全部记录,只是想看前几条记录。
如:看前6条件记录
select top 6 * from tablename order by id desc *desc为递减,asc为递增
另一种可以用百分比返回记录数:
select top 20 percent * from tablename order by id desc
意思是返回全部记录的百分之二十的记录。
2、数据库中的指针操作指令:
rs.movenext 将记录指针从当前的位置向下移一行
rs.moveprevious 将记录指针从当前的位置向上移一行
rs.movefirst 将记录指针移到数据表第一行
rs.movelast 将记录指针移到数据表最后一行
rs.recordcount 返回记录总数 ,但必须rs.open sql,cn,3,3时才有效


正航--放大你管理的力量!
正航,缔造智慧企业!
正航东莞-松山湖、长安:www.chidg.com
咨询热线:0769-81158210  13580877608
 回到顶部
帅哥哟,离线,有人找我吗?
轻轻风聆
  2楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 家人主人
等级:管理员 帖子:2672 积分:26145 威望:0 精华:14 注册:2005/9/15
  发帖心情 Post By:2020/2/22 12:36:53 [只看该作者]

ASP连接数据库的5种方法

第一种 - 这种方法用在ACCESS中最多
strc _
& Server.MapPath("aspfree.mdb")
set conn = server.createobject("adodb.connection")
conn.open strconn

第二种-这种方法用在SQL SERVER中多
strc _
&"UID=LoginID;Password=;DATABASE=Database_Name"
set conn = server.createobject("adodb.connection")
conn.open strconn

第三种
strc _
&"DBQ=F:\Inetpub\wwwroot\somedir\db1.mdb;DefaultDir=" _
&"f:\Inetpub\wwwroot\somedir;uid=LoginID;" _
&"pwd=Password;DriverId=25;FIL=MSAccess;"
set conn = server.createobject("adodb.connection")
conn.open strconn


第四种运用系统数据源
The following uses a Data Source Name: Example
set conn = server.createobject("adodb.connection")
conn.open "Example"


第五种运用ODBC数据源,前提是你必须在控制面板的ODBC中设置数据源
set rs = server.createobject("adodb.recordset")
rs.open "tblname", "DSNName", 3, 3  第一种 - 这种方法用在ACCESS中最多
strc _
& Server.MapPath("aspfree.mdb")
set conn = server.createobject("adodb.connection")
conn.open strconn

下面是讲解数据库连接的一个网站,相当好
 connectiong  :http://tempuri.org/tempuri.html

ASP连接数据库的全能代码


'解决了ACCESS数据库路径的问题!
'采用DBType=0或DBType=1来区分AC库还是MSSQL库
'具体采用AC库时应注意的事项,请看程序说明

-----------------------------------------------
Dim DBType,Conn,StrConn
DBType=0        '0为Access数据库,1为MSSQL数据库

If(DBType=0) Then
'****************ACCESS数据库******************
Dim DbFolderName,DbFolder_Path,SiteFolder
DbFolderName="ArticleData"   '数据库所在文件夹名称
DbFolder_Path = Server.MapPath(DbFolderName)   '数据库所在路径
SiteFolder="Article"                    '系统所在根目录名称

   If Session("RootDir") = "" Then
        Session("RootDir") = Mid(DbFolder_Path, 1, InStr(1,DbFolder_Path,SiteFolder,1) -1) & SiteFolder
   End if
   Set Conn = Server.CreateObject("Adodb.Connection")
   StrC & Session("RootDir") & "\"& DbFolderName & "\Data.mdb"  '连接到数据库
   Conn.Open StrConn
'**************************************************
ElseIf(DBType=1) Then
'*****************MSSQL SERVER数据库******
   Dim DBUserID,DBPassWord,DBName,DBIP
   '修改以下信息以适合你的网站
   DBUserID="sa"  '数据库登陆名
   DBPassWord=""  '数据库密码
   DBName="dbname" '数据库名称
   DBIP="local" '数据库所在地址,如果是本地数据库则为:(local)

   Set Conn=Server.CreateObject("Adodb.Connection")
   StrC&DBIP&";Initial Catalog="&DBName&";Persist Security Info=True;User ID="&DBUserID&";Password="&DBPassWord&";Connect Timeout=30"
   Conn.Open StrConn
'******************************************************
Else
'***********************数据库设置错误*****************
   Response.Write"数据库设置错误,请联系管理员!"
   Response.End
End If
'Response.Write StrConn

'解决了ACCESS数据库路径的问题!
'采用DBType=0或DBType=1来区分AC库还是MSSQL库
'具体采用AC库时应注意的事项,请看程序说明

-----------------------------------------------
Dim DBType,Conn,StrConn
DBType=0        '0为Access数据库,1为MSSQL数据库

If(DBType=0) Then
'****************ACCESS数据库******************
Dim DbFolderName,DbFolder_Path,SiteFolder
DbFolderName="ArticleData"   '数据库所在文件夹名称
DbFolder_Path = Server.MapPath(DbFolderName)   '数据库所在路径
SiteFolder="Article"                    '系统所在根目录名称

   If Session("RootDir") = "" Then
        Session("RootDir") = Mid(DbFolder_Path, 1, InStr(1,DbFolder_Path,SiteFolder,1) -1) & SiteFolder
   End if
   Set Conn = Server.CreateObject("Adodb.Connection")
   StrC & Session("RootDir") & "\"& DbFolderName & "\Data.mdb"  '连接到数据库
   Conn.Open StrConn
'**************************************************
ElseIf(DBType=1) Then
'*****************MSSQL SERVER数据库******
   Dim DBUserID,DBPassWord,DBName,DBIP
   '修改以下信息以适合你的网站
   DBUserID="sa"  '数据库登陆名
   DBPassWord=""  '数据库密码
   DBName="dbname" '数据库名称
   DBIP="local" '数据库所在地址,如果是本地数据库则为:(local)

   Set Conn=Server.CreateObject("Adodb.Connection")
   StrC&DBIP&";Initial Catalog="&DBName&";Persist Security Info=True;User ID="&DBUserID&";Password="&DBPassWord&";Connect Timeout=30"
   Conn.Open StrConn
'******************************************************
Else
'***********************数据库设置错误*****************
   Response.Write"数据库设置错误,请联系管理员!"
   Response.End
End If
'Response.Write StrConn

 

转载于:https://www.cnblogs.com/zhangchenliang/archive/2007/03/15/676397.html



正航--放大你管理的力量!
正航,缔造智慧企业!
正航东莞-松山湖、长安:www.chidg.com
咨询热线:0769-81158210  13580877608
 回到顶部
帅哥哟,离线,有人找我吗?
轻轻风聆
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 家人主人
等级:管理员 帖子:2672 积分:26145 威望:0 精华:14 注册:2005/9/15
  发帖心情 Post By:2020/2/22 12:37:23 [只看该作者]

asp 连接access数据库的完整代码

假设access文件名:mybook.mdb,放在data目录下,里面有个book的表,含有id,name字段

用asp读取所有name内容,并按id顺序降序排列,代码如下:

<%
dim conn,connstr,rs,sql
db="data/mybook.mdb"     '数据库名称,建议修改成.asp后缀
set conn=server.createobject("adodb.connection")
c&Server.MapPath(db)
conn.open connstr

set rs=server.CreateObject("adodb.recordset")
sql="select * from book order by id desc"

rs.Open sql,conn,1,1
while not rs.eof

response.write rs("name")

rs.movenext
wend
rs.close
%>



正航--放大你管理的力量!
正航,缔造智慧企业!
正航东莞-松山湖、长安:www.chidg.com
咨询热线:0769-81158210  13580877608
 回到顶部
帅哥哟,离线,有人找我吗?
轻轻风聆
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 家人主人
等级:管理员 帖子:2672 积分:26145 威望:0 精华:14 注册:2005/9/15
  发帖心情 Post By:2020/2/22 12:38:38 [只看该作者]

ASP对Access数据库的连接、增删改查及ASP的基本语法

    <html> 
    <head> 
    <meta http-equiv="Content-Type" c /> 
    <title>数据库的连接、增删改查</title> 
    </head> 
    <body> 
    <% 
    db="Database.mdb" 
    Set conn = Server.CreateObject("ADODB.Connection") 
    conn.Open "driver={Microsoft Access Driver (*.mdb)};pwd=admin;dbq=" & Server.MapPath(db)  
    response.write "数据库连接成功!" 
    Set rs = Server.CreateObject( "ADODB.Recordset" ) 
    sql = "select * from test;" 
    rs.open sql,conn,1,3 
    %> 
    <br/> 
    表test的内容: 
    <table border="1"> 
      <tr> 
        <td>id</td> 
        <td>username</td> 
        <td>password</td> 
      </tr> 
      <% 
    if (rs.bof and rs.eof) then 
    response.write "nodata!" 
    else 
    do while not rs.eof 
    %> 
      <tr> 
        <td><%=rs("id")%></td> 
        <td><%=rs("username")%></td> 
        <td><%=rs("password")%></td> 
      </tr> 
      <% 
    rs.movenext 
    loop 
    end if 
    %> 
    </table> 
    <% 
    'conn.execute "update test set username='2' where username='a';" 
    conn.execute "insert into test(username,password) values ('3','a');" 
    %> 
    ---------插入数据之后--------<br/> 
    表test的内容:<br/> 
    <% 
    Set rs = Server.CreateObject( "ADODB.Recordset" ) 
    sql = "select * from test;" 
    rs.open sql,conn,1,3 
    %> 
    <table border="1"> 
      <tr> 
        <td>id</td> 
        <td>username</td> 
        <td>password</td> 
      </tr> 
      <% 
    if (rs.bof and rs.eof) then 
    response.write "nodata!" 
    else 
    do while not rs.eof 
    %> 
      <tr> 
        <td><%=rs("id")%></td> 
        <td><%=rs("username")%></td> 
        <td><%=rs("password")%></td> 
      </tr> 
      <% 
    rs.movenext 
    loop 
    end if 
    %> 
    </table> 
    <% 
    rs.close 
    set rs=nothing 
    conn.close 
    set conn=nothing 
    %> 
    </body> 
    </html> 
这段代码是用记事本敲出来的,没有用任何开发工具,所有缺乏缩进等基本代码格式见谅,ASP实在缺乏代码开发工具。

ASPEDIT都是一些1997年就出版的东西了。

1、<head>部分

[html] view plain copy
print?

    <head> 
    <!--必须声明使用utf-8编码,否则在IE8中页面显示会乱码--> 
    <meta http-equiv="Content-Type" c /> 
    <title>数据库的连接、增删改查</title> 
    </head> 

以下就是<body>部分了

2、连接数据库部分

[html] view plain copy
print?

    <% 
    'asp同使用'去注释,不允许使用;来结束语句,每一个enter键就是代表一条语句结束 
    'Access数据库文件是database.mdb 
    db="Database.mdb" 
    Set conn = Server.CreateObject("ADODB.Connection") 
    '指定动作,pwd后的值代表此数据库的密码 
    conn.Open "driver={Microsoft Access Driver (*.mdb)};pwd=admin;dbq=" & Server.MapPath(db) 
    '在网页上输出东西,可以用response对象  
    response.write "数据库连接成功!" 
    %> 

3、查询部分

[html] view plain copy
print?

    <% 
    '指定动作 
    Set rs = Server.CreateObject( "ADODB.Recordset" ) 
    '查询语句 
    sql = "select * from test;" 
    '使用sql对conn进行查询,后面的参数代表我要完全操作这个数据库 
    rs.open sql,conn,1,3 
    %> 
    <!--此乃表头,asp代码可以与html代码混合,table默认是没有边框的,所以要设置一个border参数--> 
    <br/> 
    表test的内容: 
    <table border="1"> 
      <tr> 
        <td>id</td> 
        <td>username</td> 
        <td>password</td> 
      </tr> 
    <% 
    '如果没有查到任何东西这样写,ASP没有括号,条件体必须用end if结束,then相当于左括号,end if相当于右括号 
    if (rs.bof and rs.eof) then 
    response.write "nodata!" 
    else 
    '否则就循环,直到读完这条游标,循环条件是not rs.eof,ASP没有括号,do while循环体必须用loop结束,do while后自带左括号,loop相当于右括号 
    '下面的html循环一次就向网页写入一次 
    do while not rs.eof 
    %> 
      <tr> 
        <td><%=rs("id")%></td> 
        <td><%=rs("username")%></td> 
        <td><%=rs("password")%></td> 
      </tr> 
      <% 
      '读完一项,游标向下拉 
    rs.movenext 
    loop 
    end if 
    %> 
    </table> 

4、增加、删除、修改操作部分

这里没有写出删除操作,修改操作则被注释掉了,但他们的用法与增加操作完全一样,

[html] view plain copy
print?

    <% 
    '与查询操作不同的是,插入操作很简短。 
    '修改操作可以用下面的语句,把test表的username字段(列)中为a的项都改为2 
    'conn.execute "update test set username='2' where username='a';" 
    conn.execute "insert into test(username,password) values ('3','a');" 
    %> 

插入之后再次查询的道理与上面的未插入之前是一样道理的,就不再进行说明了。
————————————————
版权声明:本文为CSDN博主「form88」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/form88/article/details/66476242



正航--放大你管理的力量!
正航,缔造智慧企业!
正航东莞-松山湖、长安:www.chidg.com
咨询热线:0769-81158210  13580877608
 回到顶部