您现在的位置: 无忧电子商务网 >> 信息学院 >> 程序开发 >> asp >> 正文

ASP技巧TOP 10(一)

作者:作者:未…    信息学院来源:网络收集    点击数:    更新时间:2006-8-27 我要参与讨论

  1、避免使用DSN连接数据库
1054


   是否仍旧在使用ODBC系统或文件DSN连接数据库?请用OLEDB提供者代替它,这是一种速度更快而且不需要使用DSN的数据库连接技术。使用OLEDB提供者,你不必再为了创建系统DSN恳求ISP(或数据库管理员/网站管理员),也不必为了网站文件位置的变化而修改配置。

   问:

   我看到过大量通过数据资源名字(DSN)连接数据库的例子,不过我现在想不通过DSN连接数据库。在ASP中可以实现这一点吗?能否举几个具体的例子说明?我希望新的连接方法不依赖于系统DSN,但又可以在数据库连接串中指定驱动程序、服务器名字、数据库、数据库账号和密码。

   答:

   如果你使用的是SQL Server 7,请使用下面的数据库连接串:
  
strConnString = "DSN='';DRIVER={SQL SERVER};" & _
"UID=myuid;PWD=mypwd;" & _
"DATABASE=MyDb;SERVER=MyServer;"




   其中最重要的参数在于“DRIVER=”部分。如果你希望绕过ODBC,直接通过OLEDB访问SQL Server(一般来讲这种方法速度更快),请使用下面这种连接串:   
strConnString ="Provider=SQLOLEDB.1;Password=mypassword;" & _
"Persist Security Info=True;User ID=myuid;" & _
"Initial Catalog=mydbname;" & _
"Data Source=myserver;Connect Timeout=15"




   如果你要使用数据库连接串,但又不熟悉OLEDB提供者的连接串语法,请使用Visual Basic的数据环境设计器或ADO数据控件创建一个,然后把它拷贝出来用于ADO连接对象就可以了。在立即窗口中,输入命令? dataenvironment1.connection1.ConnectionString可以得到连接串的代码。请注意Microsoft Access连接串的语法有所不同,参见《Syntax for DSN-Less Connection for MS Access》

   参见:《ASP性能优化指南》中的数据库连接部分。

2、记录集中记录总数的计算
1062


   刚开始在ASP页面中使用记录集的时候可能经常会遇到这个问题。如果你想访问记录集中的数据,首先必须保证记录集中确实包含数据。请记住,如果记录集中没有数据,系统将显示非常不友好的运行时错误信息。你可以使用下面的代码去解决这种问题。

   问:

   我已经有数年的VB经验,但刚刚开始学习ASP和VBScript。现在我要打开一个Access数据库,计算其中的记录总数并在Web页面中显示这些信息。数据库的名字叫sean.mdb,其中包含一个people表,表中有三个记录。然而,当我运行脚本时它总是说有-1个记录。

   是否可以告诉我下面的代码什么地方出错了?   
< %

Set objConn = Server.CreateObject("ADODB.Connection")
Set objRst = Server.CreateObject("ADODB.Recordset")

objConn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=
" & Server.Mappath("seannewelldbsean.mdb"))

strSQL = "SELECT * FROM people"

objRst.Open strSQL, objConn

Response.write( "< P >" & strSQL & "< /P >" )
Response.write("< H2 >There are " & objRst.RecordCount &
" People in the database< /H2 >")

If objRst.RecordCount > 0 Then
objRst.MoveFirst
Do While Not objRst.EOF
Response.write( "Name = " & objRst.fields(0) )
objRst.MoveNext
Loop
else
Response.write( "It's EMPTY!" )
End If

objRst.Close
Set objRst = Nothing
objConn.Close
Set objConn = Nothing
% >




   答:

   在低版本的MDAC中RecordCount属性返回-1。请在你的服务器上把MDAC文件更新到最新的版本,最新的MDAC文件可以在www.microsoft.com/data找到。

   如果Web服务器由ISP管理而你又无权配置它,无法升级MDAC文件,那么必须修改代码。

   原来使用下面的代码检查记录集中是否有记录:   
If objRst.RecordCount > 0 Then ...




   请改用下面的代码:   
If objRst.BOF and objRst.EOF Then
' 记录集为空

[1] [2] 下一页

在google里搜索更多ASP技巧TOP 10(一)

Google
Web www.51ec.org
  • 上一篇信息学院:

  • 下一篇信息学院:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    我来说两句 对此文章发表了评论
      昵 称: *必填    ·注册用户·
      评 分: 1分 2分 3分 4分 5分     严禁发表危害国家安全、政治、黄色淫秽等内容的评论,用户需对自己在使用本网站服务过程中的行为承担法律责任。本站管理员有权保留或删除评论内容,评论内容只代表机友个人观点,与本网站立场无关。  
    评 论
    内 容

     
    评论列表 (最新 评论仅限网友观点!)

    供求信息




    | 设为首页 | 加入收藏 | 关于我们 | 广告服务 | 联系方式 | 友情链接 | 版权申明