最近参与了一个asp项目,而且这也是自己第一次进行web方面的编程;作为3p之一的asp应该是很老的技术了,但这并妨碍自己的积累和学习,尤其是web编程方面。在这里我想跟大家分享下在asp服务端如何 通过 ado 访问 access和sql server: ado是一个 访问 数据库中
最近参与了一个asp项目,而且这也是自己第一次进行web方面的编程;作为3p之一的asp应该是很老的技术了,但这并妨碍自己的积累和学习,尤其是web编程方面。在这里我想跟大家分享下在asp服务端如何通过ado访问access和sql server:ado是一个访问数据库中数据的编程接口,是微软的一个active-x组件,会随iis被自动安装;在做asp编程的时候,安装iis(即internet informations service)是必不可少的;首先确保os上已正确安装了access和sql server,由于家里电脑上没有装sql server,下面以在xp平台上访问access2003数据库为例来测试下自己写的几个数据库访问函数1.通过.udl文件获取数据库连接字符串1)新建一个txt文件,并修改后缀名为.udl;直接双击打开该udl文件后我们就可以根据需要获取特定数据库的连接字符串了;打开udl后的界面如图-1所示:
图-1
2)在这里我们选择microsoft.jet.oledb.4.0数据库提供程序来访问access,点击下一步后界面如图-2所示:
图-2
3)输入或选择数据库所在路径后,其它选项保持默认,点击测试连接后,没有问题的情况下会弹出提示【测试连接成功】的消息框;
这时,我们点击确定后用ue或者其它文本编辑工具打开该udl文件后,即可获取连接该access数据库的连接字符串;
如图-3所示:这里的连接字符串即为:provider=microsoft.jet.oledb.4.0;data source=d:\iis\webapps\my_test\gxy_db1.mdb;persist security info=false
图-3
2.通过连接字符串创建相关数据库操作函数1.)新建prodatbase.asp文件,并插入空的asp代码段;在该代码段中声明三个全局变量;分别用来存储ado记录集对象、ado连接对象、以及连接字符串;
将上面获取的连接字符串赋值给g_constr
dim g_rs,g_con,g_constr
g_constr=provider=microsoft.jet.oledb.4.0;data source=d:\iis\webapps\my_test\gxy_db1.mdb;persist security info=false
2.)创建数据连接和断开连接函数
'连接数据库function connectdatabase() set g_con=server.createobject(adodb.connection) on error resume next g_con.mode=3 '将连接模式设为可读取写 g_con.open g_constr if err0 then connectdatabase=false response.write(err.description) else connectdatabase=true end ifend function'断开数据库连接function disconnectdatabase() on error resume next g_con.close set g_con=nothing if err0 then disconnectdatabase=false response.write(err.description) else disconnectdatabase=true end ifend function
3.)创建插入记录函数'插入记录function insertrecord(table,sqlfields,sqlvalues)if connectdatabase() then sql=insert into [+table+] (+sqlfields+) values (+sqlvalues+) on error resume next g_con.execute sql if err 0 then response.write(err.description) end if disconnectdatabase()end ifend function
4.)创建更新记录函数
'更新记录function updaterecord(table,sqlfields,sqlvalues,strcondition)if connectdatabase() then sql=update [+table+] set sql_fd=split(sqlfields,,) sql_fv=split(sqlvalues,,) for i=0 to ubound(sql_fd) if iubound(sql_fd) then sql=sql & &sql_fd(i)&=&sql_fv(i)&, else sql=sql & &sql_fd(i)&=&sql_fv(i)& end if next sql=sql& where &strcondition& on error resume next g_con.execute sql if err 0 then response.write(err.description) end if disconnectdatabase()end ifend function
5.)创建删除记录函数
'根据条件删除记录function deleterecord(table,strcondition)if connectdatabase() then sql=delete from +table+ where &strcondition& on error resume next g_con.execute sql if err 0 then response.write(err.description) end if disconnectdatabase()end ifend function
6.)创建记录获取函数
'根据条件获取记录function getrecords(table,strcondition)if connectdatabase() then sql=select * from [+table+] if strcondition then sql=sql& where &strcondition& end if on error resume next set g_rs=server.createobject(adodb.recordset) g_rs.open sql,g_con if err 0 then response.write(err.description) end ifend ifend function
7.)创建资源释放函数
function releaseresource()on error resume nextg_rs.closeset g_rs=nothingdisconnectdatabase()if err0 thenresponse.write(err.description)end ifend function
3、对创建的数据库函数进行测试,这里以gxy_db1数据库下的表test_table为例,该表的各字段及全部记录如图-4和图-5所示:
图-4(id自动增长) 图-5(没有记录)
准备:新建prodatabase_test.asp文件,添加包含prodatabase.asp文件的语句,插入空的asp代码块
1.)插入记录函数测试:插入10条记录,name和age依次从name0和15岁到name9和24岁
测试代码:
测试结果如图-6所示:
图-6
2.)获取记录函数测试:获取age在18到23之间的记录并显示在网页上
测试代码:
test_table)for each x in g_rs.fields response.write() response.write(x.name) response.write()next response.write()do until g_rs.eofresponse.write()for each x in g_rs.fields response.write() response.write(x.value) response.write( )next response.write(
) g_rs.movenextloopreleaseresource()%>
测试结果如图-7所示:
图-7
3.)更新记录函数测试:将name=name7的记录的name改为newname,age改为99岁,并将获取所有记录显示在网页上
测试代码:
test_table)for each x in g_rs.fields response.write() response.write(x.name) response.write()next response.write()do until g_rs.eofresponse.write()for each x in g_rs.fields response.write() response.write(x.value) response.write( )next response.write(
) g_rs.movenextloopreleaseresource()%>
测试结果如图-8所示:
图-8
4.)删除记录函数测试:删除age大于18岁的记录,并将获取所有记录显示在网页上
测试代码:
test_table18getrecords test_table,response.write()for each x in g_rs.fields response.write() response.write(x.name) response.write()next response.write(
)do until g_rs.eofresponse.write()for each x in g_rs.fields response.write() response.write(x.value) response.write( )next response.write(
) g_rs.movenextloopreleaseresource()%>
测试结果如图-9所示:
图-9
4.总结:上述所有函数在win7和xp平台以及access2003和sql server2008 express版(vs2010自带的)上均测试过,可以正常运行;下面提供一个连接sql server2008的连接字符串供参考:(也是通过udl文件创建的,数据提供程序选择sql server native client 10.0)
g_constr=provider=sqlncli10.1;persist security info=false;user id=gxy;password=54321;initial catalog=gxy_db1;data source=(local);
第一次发博客,文笔又不行,vbscript刚接触,函数写的不够高效及简洁。。。等等。。。。。如有不当及纰漏之处,请各路大牛多多指教