您现在的位置是:焦点 >>正文
asp连接access数据库代码
焦点21173人已围观
简介ASP连Access,说穿了就是两行代码的事。但网上教程总爱绕弯子,什么DSN、什么OLE DB,看着就头大。我当年第一次写这玩意儿,愣是折腾了三个小时,最后发现就是个连接字符串写错了冒号。 直接上代 ...
ASP连Access,接a据库说穿了就是代码两行代码的事。但网上教程总爱绕弯子,接a据库什么DSN、代码什么OLE DB,接a据库看着就头大。代码我当年第一次写这玩意儿,接a据库愣是代码折腾了三个小时,最后发现就是接a据库个连接字符串写错了冒号。
直接上代码,代码这是接a据库最朴素的写法:
<% Dim conn, dbPath dbPath = Server.MapPath("data.mdb") Set conn = Server.CreateObject("ADODB.Connection") conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath %> 就这么简单。Provider那串是代码Access的驱动,Data Source后面跟的接a据库是数据库文件的物理路径。Server.MapPath是代码ASP里最常用的函数,它能把虚拟目录转成服务器上的接a据库真实路径。你总不能写"C:\inetpub\wwwroot\data.mdb"这种死路径吧?换台服务器就全废了。
但这里有个坑,得单独拎出来说。Access 2007以后的数据库文件后缀是.accdb,那Provider就得换成"Microsoft.ACE.OLEDB.12.0"。老掉牙的Jet驱动认不了新格式,这问题我见人踩过无数次。你要是拿个.accdb文件配Jet驱动,报错信息能给你绕晕——什么"未找到提供程序",其实压根就是版本不匹配。
连接打开之后,就该干正事了。比如查个表:
<% Dim rs, sql sql = "SELECT * FROM users WHERE id=1" Set rs = Server.CreateObject("ADODB.Recordset") rs.Open sql, conn, 1, 1 If Not rs.EOF Then Response.Write rs("username") End If rs.Close Set rs = Nothing %> 注意rs.Open那四个参数。第三个是游标类型,1代表键集游标,能前后翻;第四个是锁定类型,1是只读。你要是想更新数据,锁定类型就得改成3(乐观锁定),不然直接报错。这些数字记不住没关系,但得知道有这回事,不然调试起来跟无头苍蝇似的。
用完记得关连接,这是老生常谈,但真没几个人做到。ASP是单线程的,Access数据库文件又是个单用户文件,你不释放连接,别人就卡那儿了。我见过一个企业网站,后台老是报"数据库被锁定",查了半天,就是某个页面忘了关conn,导致IIS进程一直占着那个.mdb文件。
最后说个个人观察。现在都2024年了,还在用ASP+Access的,多半是维护老系统的苦命人。新项目谁还这么干?但话说回来,这套组合对小流量网站其实挺够用——几百条数据、几十个人同时访问,Access完全扛得住。你别听人瞎说Access不稳定,那多半是代码写得太烂,连接没关、SQL乱写,数据库能不炸吗?
代码写完,记得把数据库文件的权限设好。IIS进程要有读写权限,但别给Everyone完全控制,不然谁都能下载你的.mdb文件——那里面可都是明文密码。用Access做后台的,十个里有八个没设数据库密码,跟裸奔似的。
就这些。连接字符串、打开、操作、关闭,四步走完,ASP连Access这点事就算翻篇了。
Tags:
相关文章
河南哪里有反渗透实验装置报价
焦点郑州的环保设备市场里,反渗透实验装置报价能差出三倍。同样标称“实验室级”的RO膜组件,二七区那家老牌水处理公司开价四万二,高新区新注册的科技公司却只报一万五。别急着贪便宜——前者配的是陶氏膜和进口高压 ...
【焦点】
阅读更多ios破解软件社区
焦点凌晨两点,一个叫“Palera1n”的越狱工具在GitHub上更新了commit。评论区瞬间炸锅——有人在问“支持iOS 16.7了吗”,有人贴出自己iPhone X刷机失败的报错截图,还有人默默放了 ...
【焦点】
阅读更多如何查看网站登录密码
焦点浏览器里保存的密码,其实就躺在你的硬盘上。别急着找什么“查看密码”按钮,先想清楚你要看的是哪种情况——是忘了自己注册时填的密码,还是想从浏览器里把自动保存的密码挖出来?这两种处理方式完全不同。 如果是 ...
【焦点】
阅读更多