您的位置:程序门 -> web 开发 -> asp



dw做asp程序时关于数据库的几个常见问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


dw做asp程序时关于数据库的几个常见问题[已结贴,结贴人:yanglilibaobao]
发表于:2007-03-15 13:53:31 楼主
网页三剑客以其简单易学迅速被广大爱好者所青睐,尤其是dw已成为初学者制作网站的首选工具。但我们在用dw制作asp+access程序时,经常会出现这样或那样的错误,尤其是数据库方面显得特别突出。本文就此方面出现的一些常见的问题谈谈其原因及解决办法。  

  一、上传网页时出现如下错误:microsoft   ole   db   provider   for   odbc   drivers   (0x80004005)

  [microsoft][odbc   驱动程序管理器]   未发现数据源名称并且未指定默认驱动程序

  此类错误出现的情况大多是在用dw建立站点时运行到下面的步骤时我们选择了第一项或第二项。

  1、当选择了第一项时,我们开发的asp程序是在本地编辑和测试。在应用数据库时建立数据库连接大多采用的是dsn或自定义连接字符串。

  dsn是用odbc数据源管理器建立。我们知道dsn有用户dsn、系统dsn、文件dsn三种,其中用户dsn与系统dsn只能用于当前机器,不能为别的机器所用。而在用dw建立asp程序时在上图的第二项只能显示系统dsn,因此当我们将asp程序上传或到别的机器运行时便会出现上述问题。

  连接字符串包含   web   应用程序连接到数据库所需的全部信息。

  driver   指定在没有为数据库指定   ole   db   提供程序时所使用的   odbc   驱动程序。

  dbq   是指向基于文件的数据库(如在   microsoft   access   中创建的数据库)的路径。该路径是在测试数据库文件的服务器上的路径。

  下面是一个连接字符串示例,它将创建与名为book.mdb   的   access   数据库的   odbc   连接:driver={microsoft   access   driver   (*.mdb)};dbq=d:\book\trees.mdb。dreamweaver   在服务器端脚本中插入该字符串,以便应用程序服务器随后进行处理。当我们将asp程序上传或到别的机器运行时如果测试的路径与连接字符串的数据库路径不一致时,便会发生上述问题。

  2   当选择了第二项时,我们开发的asp程序是在本地编辑,然后上传到远程服务器测试。建立数据库连接也采用的是dsn或自定义连接字符串,不同的是都采用的测试服务器上的dsn或连接字符串。当采用测试服务器上的dsn时同样也只能用系统dsn于是当到别和机器运行asp程序时,也就产生了同样的问题。当采用自定义字符串时如果测试的路径与连接字符串的数据库路径不一致时,也会发生同样的问题。

  从以上分析可知,要使自己用dw开发的asp程序具有可移植性最好采用自定义字符串(也可采用文件dsn但对于初学者用自定义字符串容易些)。其具体情况如下:

  对于建立站点时选择在本地编辑与测试,可采用此自定义连接字符串:   driver={microsoft   access   driver   (*.mdb)};dbq=d:\book\trees.mdb(d:\book表示数据库文件的实际路径);d而对于在本地编辑然后上传到远程服务器测试,若要将非   dsn   连接字符串写入位于远程服务器,必须知道该文件的实际路径.如果不知道文件在远程服务器上的实际路径,则可以通过在连接字符串中使用   mappath   方法来获取该路径。其自定义连接字符串为:   如果使用   vbscript   作为脚本撰写语言,连接字符串可表示如下:driver={microsoft   access   driver   (*.mdb)};dbq=”   &   server.mappath( "/book/book.mdb ");如果使用   javascript,表达式将基本相同,只是要使用加号   (+)   而不是   &   号来串联两个   字符串,连接字符串可表示如下:driver={microsoft   access   driver   (*.mdb)};dbq=”   +server.mappath( "/book/book.mdb ")这样我们便可以顺利地移植asp程序了(注意一定要将数据库文件上载到远程服务器。记下它的虚拟路径,例如”/book/book.mdb”,否则将会出错)。   其时很多时候当我们发现类似的错误提示都应该考虑到是否因为数据库连接产生了问题,如果是便可使用上述方法解决。

网页三剑客以其简单易学迅速被广大爱好者所青睐,尤其是dw已成为初学者制作网站的首选工具。但我们在用dw制作asp+access程序时,经常会出现这样或那样的错误,尤其是数据库方面显得特别突出。本文就此方面出现的一些常见的问题谈谈其原因及解决办法。  
  一、上传网页时出现如下错误:microsoft   ole   db   provider   for   odbc   drivers   (0x80004005)

  [microsoft][odbc   驱动程序管理器]   未发现数据源名称并且未指定默认驱动程序

  此类错误出现的情况大多是在用dw建立站点时运行到下面的步骤时我们选择了第一项或第二项。

  1、当选择了第一项时,我们开发的asp程序是在本地编辑和测试。在应用数据库时建立数据库连接大多采用的是dsn或自定义连接字符串。

  dsn是用odbc数据源管理器建立。我们知道dsn有用户dsn、系统dsn、文件dsn三种,其中用户dsn与系统dsn只能用于当前机器,不能为别的机器所用。而在用dw建立asp程序时在上图的第二项只能显示系统dsn,因此当我们将asp程序上传或到别的机器运行时便会出现上述问题。

  连接字符串包含   web   应用程序连接到数据库所需的全部信息。

  driver   指定在没有为数据库指定   ole   db   提供程序时所使用的   odbc   驱动程序。

  dbq   是指向基于文件的数据库(如在   microsoft   access   中创建的数据库)的路径。该路径是在测试数据库文件的服务器上的路径。

  下面是一个连接字符串示例,它将创建与名为book.mdb   的   access   数据库的   odbc   连接:driver={microsoft   access   driver   (*.mdb)};dbq=d:\book\trees.mdb。dreamweaver   在服务器端脚本中插入该字符串,以便应用程序服务器随后进行处理。当我们将asp程序上传或到别的机器运行时如果测试的路径与连接字符串的数据库路径不一致时,便会发生上述问题。

  2   当选择了第二项时,我们开发的asp程序是在本地编辑,然后上传到远程服务器测试。建立数据库连接也采用的是dsn或自定义连接字符串,不同的是都采用的测试服务器上的dsn或连接字符串。当采用测试服务器上的dsn时同样也只能用系统dsn于是当到别和机器运行asp程序时,也就产生了同样的问题。当采用自定义字符串时如果测试的路径与连接字符串的数据库路径不一致时,也会发生同样的问题。

  从以上分析可知,要使自己用dw开发的asp程序具有可移植性最好采用自定义字符串(也可采用文件dsn但对于初学者用自定义字符串容易些)。其具体情况如下:

  对于建立站点时选择在本地编辑与测试,可采用此自定义连接字符串:   driver={microsoft   access   driver   (*.mdb)};dbq=d:\book\trees.mdb(d:\book表示数据库文件的实际路径);d而对于在本地编辑然后上传到远程服务器测试,若要将非   dsn   连接字符串写入位于远程服务器,必须知道该文件的实际路径.如果不知道文件在远程服务器上的实际路径,则可以通过在连接字符串中使用   mappath   方法来获取该路径。其自定义连接字符串为:   如果使用   vbscript   作为脚本撰写语言,连接字符串可表示如下:driver={microsoft   access   driver   (*.mdb)};dbq=”   &   server.mappath( "/book/book.mdb ");如果使用   javascript,表达式将基本相同,只是要使用加号   (+)   而不是   &   号来串联两个   字符串,连接字符串可表示如下:driver={microsoft   access   driver   (*.mdb)};dbq=”   +server.mappath( "/book/book.mdb ")这样我们便可以顺利地移植asp程序了(注意一定要将数据库文件上载到远程服务器。记下它的虚拟路径,例如”/book/book.mdb”,否则将会出错)。   其时很多时候当我们发现类似的错误提示都应该考虑到是否因为数据库连接产生了问题,如果是便可使用上述方法解决。

发表于:2007-03-15 13:53:441楼 得分:0
二、adodb.field   (0x800a0bcd)bof   或   eof   中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。

  这种错误常产生于网页之间传递数据.我们知道asp应用程序时一般至少拥有二个或二个以上的web页面,这时就得考虑在多个web页面间传递数据的处理工作。网页间数据传递的常用方法有:url方式、form方式、cookie、application、session。其中url方式和form方式实现方法简单,可实现网页间的简单数据传递(也是我们初学者能快速掌握的)而且必须是连续访问两页面间数据传递。如在制作网站搜索引擎时,便要用到form方式传递参数。又如我们每每看一些网站在用户注册后,便可在下一个页面看出到用户的详细信息。但我们用dw制作类似的页面时则总出现这样的错误。这样的错误一般属于记录集(recordset)的问题.这类问题发生的原因,一般是执行了查询条件,但送回的结果却是空的,即没有符合查询条件的记录或是执行了循环,执行到第一个或是最后一个记录集的时候,没有及时终止循环,所以产生了错误。解决此问题就要用到网页间的数据传递,可用form参数、url参数或阶段变量(如session)来决定查询条件。

  三、在dw中,因打开数据库造成的常见错误

  1   在运行程序时,因打开数据库造成的错误

  microsoft   ole   db   provider   for   odbc   drivers   错误   '80004005 '

  [microsoft][odbc   microsoft   access   driver]常见错误   不能打开注册表关键字   'temporary   (volatile)   jet   dsn   for   process   0xaa0   thread   0x628   dbc   0x2e80064   jet '。

  2   在上传文件时,因打开数据库造成的错误。

  四、不能更新。数据库或对象为只读/操作必须使用一个可更新的查询   (80004005)

  microsoft   ole   db   provider   for   odbc   drivers   错误   '80004005 '

  [microsoft][odbc   microsoft   access   driver]   操作必须使用一个可更新的查询。

  microsoft   ole   db   provider   for   odbc   drivers   错误   '80004005 '   [microsoft][odbc   microsoft   access   driver]   不能更新。数据库或对象为只读。

  1、最普遍的原因是匿名用户帐号(iusr_machine)对该数据库文件没有写权限。要解决这个问题,在管理器中调整数据库文件的属性,让匿名用户有正确的权限。当使用access数据库时,不仅要给文件写的权限,还要给该目录写的权限.在iis里面,有一个设置,就是web匿名访问用户,也就是大家熟悉的   iusr_。给你的access数据库文件增加   iusr_   的改写权限。

  1)   这就是我们要用程序去操作的access数据库文件

  2)   右键   -->   属性:此文件的“安全”属性

  3)   增加用户   iusr_

  4)   设置   iusr_   对access数据库文件的访问权限

  这是设置好了的权限注意只给了   iusr_   的读、写权限哦。不要给   everyone   权限,而且还要给执行(EXECute)   权限,这样容易被人家上传了asp木马,然后执行,你的系统最高级的权限就被入侵者获取了。

发表于:2007-03-15 13:54:222楼 得分:0
2、原因是数据库没有使用正确的模式打开。应该使用下面的方法打开。

set   conn   =   server.createobject( "adodb.connection ")  
conn.mode   =   3   '3   =   admodereadwrite  
conn.open   "mydsn "  
conn.EXECute(sql)  
conn.close  


  注意默认的mode是设置0(admodeunknown),它是允许更新的。

  3、还有可能是在odbc管理器中将该dsn的只读选项选中。

  4、你是在同时更新两个表中的字段,也会出现这个错误信息,解决办法是分开来更新这两个表中各自字段。

  5、当你使用了一个从低版本中(如access2.0,access7.0)载入到高版本(access   2000)中的查询时,在执行这个查询是会出现该错误。

  五、microsoft   jet   database   engine   错误   '80040e09 '

  不能更新。数据库或对象为只读。

  a:   未打开数据库目录的读写权限。   解决方法:

  (   1   )检查是否在   iis   中对整个网站打开了   “   写入   ”   权限,而不仅仅是数据库文件。

  (   2   )检查是否在   win2000   的资源管理器中,将网站所在目录对   everyone   用户打开所有权限。具体方法是:打开   “   我的电脑   ”----   找到网站所在文件夹   ----   在其上点右键   ----   选   “   属性   ”-----   切换到   “   安全性   ”   选项卡,在这里给   everyone   用户所有权限。

  注意:   如果你的系统是   xp   ,请先点   “   工具   ”----“   文件夹选项   ”----“   查看   ”-----   去掉   “   使用简单文件共享   ”   前的勾,确定后,文件夹   “   属性   ”   对话框中才会有   “   安全性   ”   这一个选项卡。

  六、系统不能打开注册表关键字(8007000e)

  microsoft   ole   db   provider   for   odbc   drivers   错误   '8007000e '

  [microsoft][odbc   microsoft   access   driver]常见错误   不能打开注册表关键字   'temporary   (volatile)   jet   dsn   for   process   0x11b4   thread   0x1a4c   dbc   0x9d34354   jet '。

  产生错误可能原因:

  1.打开数据库时写法不对,标准的access数据库调用写法:(如果无法记清如何写,可利用dw的帮助)

   "driver={microsoft   access   driver   (*.mdb)};dbq= "   &   server.mappath( "db.mdb ")

  2.   正在上传数据库文件。

  总之在用dw制作asp网站时使用数据库比较容易出现错误,错误出现时一定要看清错误的类型,多加思考多请教一定会得到解决。


    转http://help.csai.cn/html/200703141545571342.htm
发表于:2007-03-15 13:54:553楼 得分:0
嗯?
发表于:2007-03-15 13:56:224楼 得分:20
不错
发表于:2007-03-15 14:00:225楼 得分:20
呵呵,楼主强
接分罗^_^
发表于:2007-03-15 14:09:416楼 得分:0
jf
发表于:2007-03-15 14:11:087楼 得分:20
如果你的系统是   xp   ,请先点   “   工具   ”----“   文件夹选项   ”----“   查看   ”-----   去掉   “   使用简单文件共享   ”   前的勾,确定后,文件夹   “   属性   ”   对话框中才会有   “   安全性   ”   这一个选项卡。

楼主太强了,文章的作者更强
发表于:2007-03-15 14:15:298楼 得分:20
这个不是权限的问题,是连接字符串的问题
发表于:2007-03-15 17:16:169楼 得分:20
学习
发表于:2007-03-15 18:16:3910楼 得分:0
学习
发表于:2007-03-15 18:39:5211楼 得分:0
up,学习中~~`
发表于:2007-03-15 21:10:3212楼 得分:0
刚开始以为楼主是来问问题呢。
呵呵。。。
发表于:2007-03-15 21:25:1813楼 得分:0
呵呵,我也以为楼主是问问题的
发表于:2007-03-16 11:27:0214楼 得分:0

挺好的,敢情楼主是用过了觉得用处大才贴上来的
辛苦咯~
谢谢~
发表于:2007-03-16 12:11:1415楼 得分:0
mark   学习
发表于:2007-03-16 13:30:4416楼 得分:0
up中。。。
发表于:2007-03-16 14:13:4717楼 得分:0
学习
发表于:2007-03-16 14:38:4118楼 得分:0
我也以为
发表于:2007-03-16 15:03:2919楼 得分:0
up   学习   接分
发表于:2007-03-16 15:29:5120楼 得分:0
up
发表于:2007-03-16 15:44:3121楼 得分:0
up
发表于:2007-03-16 16:42:0222楼 得分:0
up


快速检索

最新资讯
热门点击