【asp源码栏目提醒】:网学会员鉴于大家对asp源码十分关注,论文会员在此为大家搜集整理了“【精品文献】DW做ASP程序时关于数据库的几个常见问题 - 其它管理文献”一文,供大家参考学习
DW做
ASP程序时关于数据库的几个常见问题网页三剑客以其简单易学迅速被广大爱好者所青睐尤其是DW已成为初学者制作网站的首选工具。
但我们在用DW制作ASPaccess程序时经常会出现这样或那样的错误尤其是数据库方面显得特别突出。
本文就此方面出现的一些常见的问题谈谈其原因及解决办法。
一、上传网页时出现如下错误:Microsoft OLE DB Provider for ODBC Drivers 0x80004005 MicrosoftODBC 驱动程序管理器 未发现数据源名称并且未指定默认驱动程序 此类错误出现的情况大多是在用DW建立站点时运行到下面的步骤时我们选择了第一项或第二项如图一 图一 1、当选择了第一项时我们开发的
ASP程序是在本地编辑和测试。
在应用数据库时建立数据库连接大多采用的是DSN或自定义连接字符串 用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 连接:DriverMicrosoft Access Driver .mdbDBQd:booktrees.mdb。
Dreamweaver 在服务器端脚本中插入该字符串以便应用程序服务器随后进行处理。
当我们将
ASP程序上传或到别的机器运行时如果测试的路径与连接字符串的数据库路径不一致时便会发生上述问题。
2 当选择了第二项时我们开发的
ASP程序是在本地编辑然后上传到远程服务器测试。
建立数据库连接也采用的是DSN或自定义连接字符串不同的是都采用的测试服务器上的DSN或连接字符串。
当采用测试服务器上的DSN时同样也只能用系统DSN于是当到别和机器运行
ASP程序时也就产生了同样的问题。
当采用自定义字符串时如果测试的路径与连接字符串的数据库路径不一致时也会发生同样的问题。
从以上分析可知要使自己用DW开发的
ASP程序具有可移植性最好采用自定义字符串也可采用文件DSN但对于初学者用自定义字符串容易些。
其具体情况如下: 对于建立站点时选择在本地编辑与测试可采用此自定义连接字符串: DriverMicrosoft Access Driver .mdbDBQd:booktrees.mdbd:book表示数据库文件的实际路径D而对于在本地编辑然后上传到远程服务器测试若要将非 DSN 连接字符串写入位于远程服务器必须知道该文件的实际路径.如果不知道文件在远程服务器上的实际路径则可以通过在连接字符串中使用 MapPath 方法来获取该路径。
其自定义连接字符串为: 如果使用 VBScript 作为脚本撰写语言连接字符串可表示如下:DriverMicrosoft Access Driver .mdbDBQ” Server.MapPath/book/book.mdb如果使用 JavaScript表达式将基本相同只是要使用加号 而不是 号来串联两个 字符串连接字符串可表示如下:DriverMicrosoft Access Driver .mdbDBQ” Server.MapPath/book/book.mdb这样我们便可以顺利地移植
ASP程序了注意一定要将数据库文件上载到远程服务器。
记下它的虚拟路径例如”/book/book.mdb”否则将会出错。
其时很多时候当我们发现类似的错误提示都应该考虑到是否因为数据库连接产生了问题如果是便可使用上述方法解决. 二、ADODB.Field 0x800A0BCDBOF 或 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 MicrosoftODBC 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 MicrosoftODBC Microsoft Access Driver 操作必须使用一个可更新的查询。
Microsoft OLE DB Provider for ODBC Drivers 错误 80004005 MicrosoftODBC Microsoft Access Driver 不能更新。
数据库或对象为只读。
1、最普遍的原因是匿名用户帐号IUSR_MACHINE对该数据库文件没有写权限。
要解决这个问题在管理器中调整数据库文件的属性让匿名用户有正确的权限。
当使用ACCESS数据库时不仅要给文件写的权限还要给该目录写的权限.在IIS里面有一个设置就是Web匿名访问用户也就是大家熟悉的 IUSR_。
给你的Access数据库文件增加 IUSR_ 的改写权限。
1 这就是我们要用程序去操作的Access数据库文件 2 右键 -- 属性:此文件的“安全”属性 3 增加用户 IUSR_ 4 设置 IUSR_ 对Access数据库文件的访问权限 这是设置好了的权限注意只给了 IUSR_ 的读、写权限哦。
不要给 Everyone 权限而且还要给执行Execute 权限这样容易被人家上传了
ASP木马然后执行你的系统最高级的权限就被入侵者获取了。
2、原因是数据库没有使用正确的模式打开。
应该使用下面的方法打开。
Set Conn Server.CreateObjectADODB.Connection Conn.Mode 3 3 adModeReadWrite Conn.Open myDSN Conn.ExecuteSQL Conn.Close 注意默认的Mode是设置0adModeUnknown它是允许更新的。
3、还有可能是在ODBC管理器中将该DSN的只读选项选中。
4、你是在同时更新两个表中的字段也会出现这个错误信息解决办法是分开来更新这两个表中各自字段。
5、当你使用了一个从低版本中如ACCESS2.0ACCESS7.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 MicrosoftODBC Microsoft Access Driver常见错误 不能打开注册表关键字 Temporary volatile Jet DSN for process 0x11b4 Thread 0x1a4c DBC 0x9d34354 Jet。
产生错误可能原因: 1.打开数据库时写法不对标准的ACCESS数据库调用写法:如果无法记清如何写可利用DW的帮助 driverMicrosoft Access Driver .mdbdbq server.mappathdb.MDB 2. 正在上传数据库文件。
总之在用DW制作
ASP网站时使用数据库比较容易出现错误错误出现时一定要看清错误的类型多加思考多请教一定会得到解决。
我也碰到过这个问题解决方面有两种。
1 将最后一层的目录名更名更名方法是在原来的目录后面加 空格和并且也将数据库名也更名更名方法是在原来的文件名前面加和空格。
此方法较复杂 2 将 连接字符串 改为 如ProviderMicrosoft.Jet.OLEDB.4.0Data Sourceserver.Mappath/ceshi/db/db1.mdb 改为ProviderMicrosoft.Jet.OLEDB.4.0Data Source server.Mappath/ceshi/db/db1.mdb 新建一动态站点新建一动态网页。
执行“窗口”——“数据库”打开数据库面板单击“”号选择“自定义连接字符串”。
在打开的对话框中设置以下参数 连接名称conn1 连接字符串providermicrosoft.jet.oledb.4.0data source数据库完整路径 例如有一数据库放在c:inetpubwwwroot目录下名称为db1.mdb 则连接字符串为providermicrosoft.jet.oledb.4.0data sourcec:inetpubwwwrootdb1.mdb 单击“测试”按钮若弹出“成功创建连接脚本”的提示则连接成功。
系统会在站点同一目录下自动创建一个名为connection的文件夹并在此文件夹中创建一个名为conn1.
asp的连接文件。