百独托管7500 紫田网络超高转化播放器收cps[推荐]速盾CDN 免实名免备防屏蔽阿里云 爆款特卖9.9元封顶提升alexa、IP流量7Q5团队
【腾讯云】中小企福利专场【腾讯云】多款产品1折起高防 随时退换 好耶数据小飞国外网赚带你月入万元炎黄网络4H4G10M 99每月
香港带宽CN2/美国站群优惠中客数据中心 服务器租用联盟系统移动广告平台 中易企业专场腾讯云服务器2.5折九九数据 工信部正规资质
腾讯云新用户大礼包代金券高价收cpa注册量高价展示【腾讯云】2核2G/9.93起租服务器找45互联 随时退换阿里云 短信服务 验证秒达

[代码发布] =====================ASP常用数据库连接及操作的方法和技巧 [复制链接]
查看:156143 | 回复:8

4

主题

8133

帖子

8978

积分

落伍者(三羊开泰)

傲天

Rank: 3Rank: 3

贡献
32
鲜花
0
注册时间
2005-1-13
发表于 2005-10-11 18:58:22 | |阅读模式 来自 中国
作者:Snowdust

1.ASP连接Access数据库

  1. <%
  2. dim conn,mdbfile
  3. mdbfile=server.mappath("数据库名称.mdb")
  4. set conn=server.createobject("adodb.connection")
  5. conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=数据库密码;dbq="&mdbfile
  6. %>
复制代码


2. ASP与SQL数据库连接:

  1. <%
  2. dim conn
  3. set conn=server.createobject("ADODB.connection")
  4. con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL服务器名称或IP地址;UID=sa;PWD=数据库密码;DATABASE=数据库名称
  5. %>
复制代码

建立记录集对象:
  1. Set rs=server.createobject("adodb.recordset")
  2. rs.open SQL语句,conn,3,2
复制代码


3. SQL常用命令使用方法:

(1) 数据记录筛选:

  1. sql="select * from 数据表 where 字段名=字段值 order by 字段名 "
  2. sql="select * from 数据表 where 字段名 like ‘%字段值%‘ order by 字段名 "
  3. sql="select top 10 * from 数据表 where 字段名 order by 字段名 "
  4. sql="select * from 数据表 where 字段名 in (‘值1‘,‘值2‘,‘值3‘)"
  5. sql="select * from 数据表 where 字段名 between 值1 and 值2"
复制代码


(2) 更新数据记录:

  1. sql="update 数据表 set 字段名=字段值 where 条件表达式"
  2. sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"
复制代码


(3) 删除数据记录:

  1. sql="delete from 数据表 where 条件表达式"
  2. sql="delete from 数据表" (将数据表所有记录删除)
复制代码


(4) 添加数据记录:

  1. sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"
  2. sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)
复制代码


(5) 数据记录统计函数:

  1. AVG(字段名) 得出一个表格栏平均值
  2. COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计
  3. MAX(字段名) 取得一个表格栏最大的值
  4. MIN(字段名) 取得一个表格栏最小的值
  5. SUM(字段名) 把数据栏的值相加
复制代码


引用以上函数的方法:

  1. sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
  2. set rs=conn.excute(sql)
复制代码


用 rs("别名") 获取统的计值,其它函数运用同上。

(5) 数据表的建立和删除:

CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )

例:
  1. CREATE TABLE tab01(name varchar(50),datetime default now())
复制代码


DROP TABLE 数据表名称 (永久性删除一个数据表)

(6) 记录集对象的方法:
  1. rs.movenext 将记录指针从当前的位置向下移一行
  2. rs.moveprevious 将记录指针从当前的位置向上移一行
  3. rs.movefirst 将记录指针移到数据表第一行
  4. rs.movelast 将记录指针移到数据表最后一行
  5. rs.absoluteposition=N 将记录指针移到数据表第N行
  6. rs.absolutepage=N 将记录指针移到第N页的第一行
  7. rs.pagesize=N 设置每页为N条记录
  8. rs.pagecount 根据 pagesize 的设置返回总页数
  9. rs.recordcount 返回记录总数
  10. rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
  11. rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否
  12. rs.delete 删除当前记录,但记录指针不会向下移动
  13. rs.addnew 添加记录到数据表末端
  14. rs.update 更新数据表记录

  15. 判断所填数据是数字型

  16. if not isNumeric(request("字段名称")) then
  17. response.write "不是数字"
  18. else
  19. response.write "数字"
  20. end if
复制代码


经常使用到有关数据库的操作。包括连接代码、SQL命令等等,又不曾刻意去记忆它们(我本人是不愿意去记这东东),所以常常在用到的时候又去查书本,翻来翻去。一些比较少用的数据库还不一定能顺利找到,所以现在把它们全归纳到这里,提供大家参考。
QUOTE:
===推荐FIREFOX===不信你试试===

4

主题

8133

帖子

8978

积分

落伍者(三羊开泰)

傲天

Rank: 3Rank: 3

贡献
32
鲜花
0
注册时间
2005-1-13
 楼主| 发表于 2005-10-11 18:58:53 | 来自 中国
一、数据库的连接方法:
1.Access数据库的DSN-less连接方法:

  1. set adocon=Server.Createobject("adodb.connection")
  2. adoconn.Open"Driver={Microsoft Access Driver(*.mdb)};DBQ="& _
  3. Server.MapPath("数据库所在路径")
复制代码


2.Access OLE DB连接方法:

  1. set adocon=Server.Createobject("adodb.connection")
  2. adocon.open"Provider=Microsoft.Jet.OLEDB.4.0;"& _
  3. "Data Source=" & Server.MapPath("数据库所在路径")
复制代码


3.SQL server连接方法:

  1. set adocon=server.createobject("adodb.recordset")
  2. adocon.Open"Driver={SQL Server};Server=(Local);UID=***;PWD=***;"& _
  3. "database=数据库名;"
复制代码


4.SQL server OLE DB连接方法:

  1. set adocon=Server.Createobject("adodb.connection")
  2. adocon.open"provider=SQLOLEDB.1;Data Source=RITANT4;"& _
  3. "user ID=***;Password=***;"& _
  4. "inital Catalog=数据库名"
复制代码


5.Oracle 连接方法:

  1. set adocon=Server.Createobject("adodb.connection")
  2. adocon.open"Driver={microsoft odbc for oracle};server=oraclesever.world;uid=admin;pwd=pass;"
复制代码


6.Oracle OLE DB 连接方法:

  1. set adocon=Server.Createobject("adodb.connection")
  2. adocon.open"Provider=OraOLEDB.Oracle;data source=dbname;user id=admin;password=pass;"
复制代码


7.dBase 连接方法:

  1. set adocon=Server.Createobject("adodb.connection")
  2. adocon.open"Driver={microsoft dbase driver(*.dbf)};driverid=277;dbq=------------;"
复制代码


8.mySQL 连接方法:

  1. set adocon=Server.Createobject("adodb.connection")
  2. adocon.open"Driver={mysql};database=yourdatabase;uid=username;pwd=yourpassword;option=16386;"
复制代码


9.Visual Foxpro 连接方法:

  1. set adocon=Server.Createobject("adodb.connection")
  2. adocon.open"Driver={microsoft Visual Foxpro driver};sourcetype=DBC;sourceDB=*.dbc;Exclusive=No;"
复制代码


10.MS text 连接方法:

  1. set adocon=Server.Createobject("adodb.connection")
  2. adocon.open"Driver={microsoft text driver(*.txt; *.csv)};dbq=-----;"&_
  3. "extensions=asc,csv,tab,txt;Persist SecurityInfo=false;"
复制代码


11.MS text OLE DB 连接方法:

  1. set adocon=Server.Createobject("adodb.connection")
  2. adocon.open"Provider=microsof.jet.oledb.4.0;data source=your_path;"&_
  3. "Extended Properties'text;FMT=Delimited'"
复制代码


<二>。常用的四种SQL命令:

1.查询数据记录(Select)
语法:Select 字段串行 From table Where 字段=内容
例子:想从book表中找出作者为"cancer"的所有记录,SQL语句便如下:
select * from book where author=’cancer’
"*"是取出book表所有的字段,如查询的字段值为数字,则其后的"内容"便无须加上单引号,

如是日期,则在Access中用(#)包括,而在SQL server中则用(’)包括,
如:

  1. select * from book where id=1
  2. select * from book where pub_date=#2002-1-7# (Access)
  3. select * from book where pub_date=’2002-1-7’ (SQL Server)
复制代码


提示:
日期函数to_date不是标准sql文,不是所有的数据库适用,所以大家在使用的时候要参考数据库具体语法

另外如果是查询传入的变量,则如下:

  1. strau=request.form("author")
  2. strsql="select * from book where author=’"&strau&"’"
复制代码


如果查询的是数字,则:

  1. intID=request.form("id")
  2. strsql="select * from book where id="&intID
复制代码


在很多数据库中,如:oracle,上面的语句是可以写成:
strsql="select * from book where id='"&intID&"'"的。
但是字符型一定不能按照数字格式写,需要注意。

2.添加记录(Insert)
语法:Insert into table(field1,field2,....) Values (value1,value2,....)
例子:添加一作者是"cancer"的记录入book表:
insert into book (bookno,author,bookname) values (’CF001’,’cancer’,’Cancer无组件上传程序’)
同样,如果用到变量就如下:

  1. strno=request.form("bookno")
  2. strau=request.form("author")
  3. strname=request.form("bookname")
  4. strsql="insert into book (bookno,author,bookname) values (’"&strno&"’,’"&strau&"’,’"&strname&"’)"
复制代码


3.用Recordset对象的Addnew插入数据的方法:
语法:

  1. rs.addnew
  2. rs("field1").value=value1
  3. rs("field2").value=value2
  4. ...
  5. rs.update
复制代码


4.修改数据记录(Update)
语法:update table set field1=value1,field2=value2,...where fieldx=valuex
例子:update book set author=’babycrazy’ where bookno=’CF001’
如果用到变量就如下:

  1. strno=request.form("bookno")
  2. strau=request.form("author")
  3. strsql="update book set author=’"&strau&"’ where bookno=’"&strno"’"
复制代码


5.Recordset对象的Update方法:
语法:

  1. rs("field1").value=value1
  2. rs("field2").value=value2
  3. ...
  4. rs.update
复制代码


注意:使用语法3和语法5的时候,一定要注意字段的类型(尤其是日期型)一致,否则出错的几率非常的高。


例子:

  1. strno=request.form("bookno")
  2. strau=request.form("author")
  3. set adocon=server.createobject("adodb.connection")
  4. adocon.open "Driver={Microsoft Access Driver(*.mdb)};DBQ=" & _
  5. Server.Mappath=("/cancer/cancer.mdb")
  6. strsql="select * from book where bookno=’"&strno&"’"
  7. set rs=server.createobject("adodb.recordset")
  8. rs.open strsql,adconn,1,3
  9. if not rs.eof then ’如果有此记录的话
  10. rs("author").value=strau
  11. rs.update
  12. end if
  13. rs.close
  14. set rs=nothing
  15. adocon.close
  16. set adocon=nothing
复制代码


6.删除一条记录(Delete)
语法:Delete table where field=value
例子:删除book表中作者是cancer的记录

  1. delete book where author=’cancer’
复制代码


(注意:如果book表中author字段的值为cancer的记录有多条,将会删除所有author为cancer的记录)
QUOTE:
===推荐FIREFOX===不信你试试===

6

主题

5525

帖子

5713

积分

落伍者(三羊开泰)

Rank: 3Rank: 3

贡献
228
鲜花
1
注册时间
2005-2-28
发表于 2005-10-11 19:06:14 | 来自 中国广东广州
学习ING
【长期收各种数字米 有的直接带价PM/Q】
QQ:叁叁零伍伍伍肆伍陆 请注明玉米
头像被屏蔽

244

主题

5008

帖子

4616

积分

禁言

贡献
1140
鲜花
0
注册时间
2005-3-6
发表于 2005-10-11 19:15:55 | 来自 中国安徽合肥
原帖由 风行 于 2005-10-11 19:06 发表
学习ING
签名被屏蔽

1

主题

4797

帖子

3185

积分

落伍者(两全齐美)

Soar In Sky

Rank: 2

贡献
652
鲜花
0
注册时间
2004-4-3
发表于 2005-10-11 19:20:07 | 来自 中国天津
支持!
谣言止于智者
头像被屏蔽

0

主题

1473

帖子

1247

积分

落伍者(两全齐美)

Rank: 2

贡献
0
鲜花
0
注册时间
2005-5-29
发表于 2006-10-10 14:16:51 | 来自 中国上海
看了落伍精华区才知道落伍的强大
签名被屏蔽

10

主题

5万

帖子

5万

积分

落伍者(五谷丰登)

Rank: 8Rank: 8

贡献
2788
鲜花
118
注册时间
2003-11-9

QQ绑定

发表于 2006-10-30 08:57:31 | 来自 中国陕西西安
原帖由 风行 于 2005-10-11 19:06 发表
学习ING

20

主题

1172

帖子

1734

积分

落伍者(两全齐美)

Rank: 2

贡献
496
鲜花
0
注册时间
2006-10-26

QQ绑定

发表于 2006-11-18 18:26:51 | 来自 中国江苏南京
原帖由 vlin 于 2006-10-30 08:57 发表

19

主题

9513

帖子

9534

积分

落伍者(三羊开泰)

╰⊙╯╰⊙╯

Rank: 3Rank: 3

贡献
890
鲜花
28
注册时间
2006-7-10

落伍手机绑定

发表于 2006-12-3 13:46:05 | 来自 中国福建福州
rs.movenext 将记录指针从当前的位置向下移一行
rs.moveprevious 将记录指针从当前的位置向上移一行
rs.movefirst 将记录指针移到数据表第一行
rs.movelast 将记录指针移到数据表最后一行
rs.absoluteposition=N 将记录指针移到数据表第N行
rs.absolutepage=N 将记录指针移到第N页的第一行
rs.pagesize=N 设置每页为N条记录
rs.pagecount 根据 pagesize 的设置返回总页数
rs.recordcount 返回记录总数
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete 删除当前记录,但记录指针不会向下移动
rs.addnew 添加记录到数据表末端
rs.update 更新数据表记录

判断所填数据是数字型

if not isNumeric(request("字段名称")) then
response.write "不是数字"
else
response.write "数字"
end if

原来是这样子的啊
论坛客服/商务合作/投诉举报:2171544 (QQ)
落伍者创建于2001/03/14,本站内容均为会员发表,并不代表落伍立场!
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!
落伍官方微信:2030286 邮箱:(djfsys@gmail.com|tech@im286.com)
© 2001-2014

浙公网安备 33060302000191号

浙ICP备11034705号 BBS专项电子公告通信管[2010]226号

  落伍法律顾问: ITlaw-庄毅雄

手机版|找回帐号|不能发帖?|Archiver|落伍者

GMT+8, 2024-6-2 06:57 , Processed in 0.135156 second(s), 38 queries , Gzip On.

返回顶部