设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2442|回复: 1
打印 上一主题 下一主题

[ActiveX] 讲一讲ASP处理数据用的组件ADO (ActiveX Data Object) - Database Query

[复制链接]
跳转到指定楼层
1#
发表于 2007-9-19 10:49:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
讲一讲ASP处理数据用的组件ADO (ActiveX Data Object) - Database Query

讲一讲ASP处理数据用的组件ADO (ActiveX Data Object)一、 字符串形式连接一个 Access库 <% set conn=server.createobject("ADODB.CONNECTION") path=server.MapPath("info.mdb") conn.open "provider=microsoft.jet.oledb.4.0; data source="&path&"" %> set conn=server.CreateObject ("adodb.connection") 这是创建一个Connection 属性的对象conn的代码 很简单吧!^_^ path=server.MapPath("info.mdb") 用asp带的server对象的MapPatch方法返回 info.mdb的绝对路径。 conn.open "provider=microsoft.jet.oledb.4.0; data source="&path 用conn.对象的open方法创建一个对Access数据库的连接  provider=microsoft.jet.oledb.4.0 就代表连接的是一个Access连接 而后边的 data source="&path 指定了要连接的数据库的绝对路径。:·) 二、字符串形式连接一个Sql Server库 <% set conn=server.CreateObject ("adodb.connection") conn.Open "driver={SQL  Server};server=localhost;UID=usernameWD=password;database=dataname" %> 看上边这段代码。 set conn=server.CreateObject ("adodb.connection") 上边讲过了 是创建一个 connections的对象:-) 现在我们用这个对象打开一个数据库连接 conn.Open "driver={SQL  Server};server=localhost;UID=usernameWD=password;database=dataname" conn的open方法是打开一个连接用的 后边根一个字符串 driver={SQL Server}的 意思是连接的是一个sql server的库,server=localhost 中的localhost代表的是 本机的IP 当然 你的数据库服务器IP是多少这里就改成相应的 值;UID=usernameWD=password;这两个是你登陆你的数据库服务器的用户名跟密 码。下边一个database=dataname 就是你要*作的数据库的名字了 :-} 至此 你已 经成功的创建一个SQL Server的连接了。  连接建立了,但是要使用recordset属性的对象做数据处理我们还需要一点知识, 那就是T-SQL语言 我们必须用T-SQL选择一个记录集传送给recordset属性 下边我 给大家讲一条简单的sql语句 方便大家实践中使用。看下边这个例子: Select *  from tablename where uid=’Coolshow’  Select 后边紧跟着一个*,*是通配符 代表选择表中的所有字段 也可以指定一个 或一个以上的字段 比如这样写 Select uid只打开一个uid字段,或者Select  uid,pwd,sex,tel,address同时打开uid,pwd,sex,tel,address五个字段。 后边 from tablename 是打开那个表,这里有几种用法,由于相对复杂一点,而且我们 的重点不是在这里 所以在这里就不多说了,如果有什么疑问大家可以给编辑写信 让他要求我在写一篇关于T-SQL的 :-) 再往后看,where uid=’Coolshow’ 这句 话的意思是选取所有符合 uid字段的值等于字符串Coolshow的记录集,也可以用  and 来连接多个条件,这里也不详细讲述了 :) 好了,两个主流数据库我们都连接上了,T-SQL语言你也能简单的使用了,下边该 讲一下如何利用recordset属性读取数据了。 首先让我们来创建一个recordset属性的对象 set rs=server.CreateObject ("ADODB.Recordset") 很简单的一段代码 利用了asp自带的server对象的CreateObject方法创建了一个 Recordset属性的对象,大家会发现这段代码跟前边创建连接的那个对象的代码差 不多 没错,asp创建对象都是这个样子的 :)现在让我们用Recordset的对象rs来 打开一个记录集。 Rs.open “Select * from tablename where uid=’Coolshow’”,conn,1,1 看看 这句是不是很容易懂 用我们刚刚创建的Recordset属性的对象RS的open方法打开一 个记录集,后边跟了三个参数用逗号分开,第一个参数不用讲了,就是选取数据用 的T-sql语句第二个那:_) 就是我们已经创建好连接的connection属性的对象conn  后边两个参数说法比较多,我在这里简单的给大家讲一下,如果只读取数据 设 置”1,1”就足够了,如果要添加数据,设置”1,2”如果要改写数据最好设置” 2,3”。这两个参数一定要切记不然在将来的编程中会给你带来不少的麻烦,看着 sql语句没错,对象用法也没错,数据库表结构也没错,为什么就oledb错误哪?问 题往往就出在这,检查一下你这两个参数 是够给足了rs对象权限让他做你要他做 的事情。好了,两对象(object)我们都搞完了 ^^  现在让我们进入处理数据的具 体实践中。 一、 显示数据 别用如饥似渴的眼神看着我,猴急什么~ 嘿~ 调节一下气氛.下面我写一段代码  你看看能不能读懂,要是读得懂就说明整个ado的使用你已经学会了一半了 <% set conn=server.CreateObject ("adodb.connection") conn.Open "driver={SQL  Server};server=localhost;UID=username;PWD=password;database=dataname" set rs=server.CreateObject ("ADODB.Recordset") rs.open “Select * from tablename where uid=’Coolshow’”,conn,1,1 %> 好,如果你看懂了,我们就接着来看下一步,ado的数据显示 <% set conn=server.CreateObject ("adodb.connection") conn.Open "driver={SQL  Server};server=localhost;UID=username;PWD=password;database=dataname" set rs=server.CreateObject ("ADODB.Recordset") rs.open “Select * from tablename where uid=’Coolshow’”,conn,1,1 if rs.eof and rs.bof then       ’如果数据指针同时指到记录集的头部根尾部 说明记录集为空这时候 response.write “没有可以显示的数据”  ’打印“没有可以显示的数据” do until rs.EOF   ‘循环 直到记录集尾部为止 response.write rs(“字段1名”)    ’显示一个行的一个字段 response.write rs(“字段2名”)    ’同上 response.write rs(“字段3名”)    ’同上 response.write “ ”         ’一个行打印完毕 换行 rs.MoveNext                ’将数据指针移到下一个行 loop                       ’循环结束 %> 这段代码我加上了注释 相信大部分你已经看懂了 现在我们新接触到的东西只 有三样,就是 rs.bof   rs.eof  rs.movenext 这三个方法都是跟数据指针有关 的,前两个rs.bof和rs.eof用来判断数据指针是否在记录集的开始或者末尾,bof 和eof显而易见b代表begin,e代表end 也是头根尾的意思,他们两个都会返回一个 布尔值。再来看看rs.movenext 他跟前两者就大不相同了,他是用来控制数据指针 的,让指针移动到下一位,我们能把一个表的多个行显示出来也就是靠他。至此你 已经把一个表的数据显示到asp网页上了。 二、 添加数据 <% set conn=server.CreateObject ("adodb.connection") conn.Open "driver={SQL  Server};server=localhost;UID=username;PWD=password;database=dataname" set rs=server.CreateObject ("ADODB.Recordset") rs.open “Select * from tablename where uid=’Coolshow’”,conn,1,2  ’ 这里我们要添加数据所以把参数改成了1,2 rs.addnew   ’告诉rs 我们要添加一行 rs(“字段1名”)=值1   ’给要添加的行的一个字段赋值 rs(“字段2名”)=值2   ’同上 rs(“字段3名”)=值3   ’同上 rs.update   ’通知rs我们要把这个行写入数据库 %> 这段代码便可以把一个新的行写入数据库了,不论Access的库还是Sql Server的库 都是这样的。这里我们有两个以前没见过的方法rs.addnew  rs.update  其中 rs.addnew专门是添加一个行时必要的而rs.update则是写入,修改数据库时都需要 用的。现在你已经成功地通过asp网页向数据库添加一条记录了。 三、 修改数据 修改数据根添加数据差不多只是在T-sql语句里你必须只选取一个行。 <% set conn=server.CreateObject ("adodb.connection") conn.Open "driver={SQL  Server};server=localhost;UID=username;PWD=password;database=dataname" set rs=server.CreateObject ("ADODB.Recordset") rs.open “Select * from tablename where uid=’Coolshow’”,conn,2,3  ’ 这里我们要修改数据所以把参数改成了2,3 rs(“字段1名”)=值1   ’给要修改的行的一个字段赋一个新值 rs(“字段2名”)=值2   ’同上 rs(“字段3名”)=值3   ’同上 rs.update   ’通知rs我们要把修改好的这个行写入数据库 %> 拿这段代码根添加数据的代码比较,你会发现只有两个不同点,就是conn后边的参 数,以及没有了addnew,对的 :) 修改根添加的区别仅在于此。呵呵 很轻松的利 用ado修改数据的技巧你也学会了。下边是删除数据了,删除数据更简单了 J 四、 删除数据 <% set conn=server.CreateObject ("adodb.connection") conn.Open "driver={SQL  Server};server=localhost;UID=username;PWD=password;database=dataname" set rs=server.CreateObject ("ADODB.Recordset") rs.open “Select * from tablename”,conn,2,3  rs.delete  ’通知rs我们要删除当前记录 %> 这里我们新接触到的方法就是rs.delete了,顾名思义,就是删除当前记录嘛!没 什么好讲的了 J不过值得一提的是如果我们想要批量删除数据,比如清除所有数量 =0的货物记录为了方便不至于一个一个去删除我们还可以用一下这个方法。 <% set conn=server.CreateObject ("adodb.connection") conn.Open "driver={SQL  Server};server=localhost;UID=username;PWD=password;database=dataname" set rs=server.CreateObject ("ADODB.Recordset") rs.open “Select * from tablename”,conn,2,3  rs.filter=”数量=0”    ’在这里我们指定了一个条件 rs.delete  ’通知rs我们要删除当前记录 %> 让我们来看一下rs.filter=”数量=0” 其实他就是sql 语句的一部分 其中数量  就是字段名称而0就是要求的值。这样,我们便把数据库里面说有数量=0的行删除 了。 讲到这里ado的常用功能也就全部讲完,此文仅希望开拓大家的思路,助喜欢 asp的朋友们跨过ado这个门槛
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2007-9-19 11:34:53 | 只看该作者
只要引用到conn,其它不是和VBA一样嘛。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-29 02:58 , Processed in 0.095326 second(s), 25 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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