蚁集网 >地理信息相关技术大本营 >二次开发技术 >正文
地理信息相关技术

地理信息相关技术

地理信息系统相关软件操作;地理信息系统二次开发相关技术 [查看全部]

大本营地址:http://www.yiji.com/地理信息相关技术/ [复制地址] [加入收藏夹]


数据库连接常见错误\解决方案总结 (引)

hanhaiyiou提交于:2007-8-13 | 本文目前专长值:
数据库连接常见错误\解决方案总结
 
 
引:
  和数据库打交道,常常碰上不是这样就是那样的问题.其实,碰上的问题越多越好,网络上一搜,然后解决,再做开发,速度也就快了!同一数据库问题会有多种原因和情况,本文仅为个人数据库处理中遇到的问题及解决方法的网络搜集\实践\总结\细化.
 首先,感谢网络上为我们支招话策的有心人,你们辛苦了!
(1)问题1"[Microsoft][ODBC Microsoft Access Driver] 操作必须使用一个可更新的查询。"错误;(参考:http://www.it-school.cn/html/XML-SOAP/200611/144268.html
(1)提示出错信息:
Microsoft   OLE   DB   Provoer   for   ODBC   Drivers   错误   '80004005'     
    [Microsoft][ODBC   Microsoft   Access   Driver]   操作必须使用一个可更新的查询。     
     /hdfx/inc/inc_doc_disp.asp,行54
    
(2)出错原因及解决方法
原因:  
   
  有几个主要的错误原因(风雨者):  
  这个错误发生在当你的程序试图执行更新数据库或其它类似操作时。这是因为  
  ADO由于以下的几个原因而不能够写数据库造成的。  
  1、最普遍的原因是匿名用户帐号(IUSR_MACHINE)对该数据库文件没有写权限。    
   要解决这个问题,在管理器中调整数据库文件的属性,让匿名用户有正确的权限。当使用ACCESS数据库时,不仅要给文件写的权限,还要给该目录写的权限,因狫et需要在该目录建立一个.ldb文件。  
  2、第二个原因是数据库没有使用正确的模式打开。应该使用下面的方法打开。  
      SQL   =   "UPDATE   Products   Set   UnitPrice   =   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)中的查询时,在执行这个查询是会出现该错误。  
6,点击你的数据库名字/右键/属性/安全/把everyone设为完全控制。/修改数据库所在目录的权限,把internet来宾   用户加上修改等权限
(3)调整数据库连接方式,不用ODBC连接,改用DSN事实;   
  用DSN连接并且没有用户名和密码:  
   
  MS   Access数据库连接  
  <%  
  set   conn   =   Server.CreateObject("ADODB.Connection")  
  conn.open   "YourDSNo"  
  %>  
   
  用DSN连接并且有用户名和密码:  
   
  <%  
  set   conn   =   Server.CreateObject("ADODB.Connection")  
  conn.open   "YourDSNo","usero","password"  
  %>  
   
  用实际的数据库绝对路径连接:  
   
  <%  
  Set   conn   =   Server.CreateObject("ADODB.Connection")  
  Strconn="DRIVER={Microsoft   Access   Driver   (*.mdb)};   "  
  Strconn=Strconn   &   "DBQ=e:\\yanhang\\database.mdb"    
  conn.Open   Strconn  
  %>  
   
  用实际的数据库相对路径连接:  
   
  <%  
  Set   conn   =   Server.CreateObject("ADODB.Connection")  
  Strconn="DRIVER={Microsoft   Access   Driver   (*.mdb)};   "  
  Strconn=Strconn   &   "DBQ="   &   Server.MapPath("/database/yanhang.mdb")  
  conn.Open   Strconn  
  %>
 
(2)问题2:[Microsoft][ODBC Microsoft Access Driver] 标准表达式中数据类型不匹配错误:
我遇到的问题,area,year为数值型,type为文本型,想根据三者的赋值进行查询,错误代码如下:
chaxunresult.Source = "SELECT * FROM landindex WHERE year = " + Replace(chaxunresult__MMColParam, "'", "''") + " and area = " + Replace(chaxunresult__MMColParam2, "'", "''") + " and type = " + Replace(chaxunresult__MMColParam3, "'", "''") + ""
修改后为:
chaxunresult.Source = "SELECT * FROM landindex WHERE year = " + Replace(chaxunresult__MMColParam, "'", "''") + " and area = " + Replace(chaxunresult__MMColParam2, "'", "''") + " and type = '" + Replace(chaxunresult__MMColParam3, "'", "''") + "'"
例如网络上的例子:
(1)$sql="select * from pass where passle='1'"; 用的是PHP +ACCESS ,运行出现以上错误,如果库中变量passle 是文本型的,则不会出现以上错误,错误的原因是passle是数值型的,应改为:$sql="select * from pass where passle=1";
 (2)mstartworktime是时间类型  
   
  sql="select   *   from   WorkLog   where   MStartWorkTime   between   '"   &   sDate   &   "'   and   '"   &   edate   &   "'   and     uo='"&usero&"'"  
出错,
可修改为: sql="select   *   from   WorkLog   where   MStartWorkTime   between   #"   &   sDate   &   "#   and   #"   &   edate   &   "#   and     uo='"&usero&"'"  
(3)问题3 数据库连接出错
 方案:
1//conn.asp:
<%
db_path="../access/hechuanning.mdb"
set conn=server.CreateObject("ADODB.connection")
connstr="driver={Microsoft Access Driver (*.mdb)};dbq="&server.MapPath(db_path)
conn.open connstr
%>
2//db_path="../access/hechuanning.mdb"
set conn=server.createobject("adodb.Connection")
connstr="provoer=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db_path)
conn.Open connstr
(4)错误类型:
ADODB.Field (0x800A0BCD)
BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。
/baohuqufindshanchuresult.asp, 第 137 行
其中一个原因是 :本页需要一个变量的初始赋值,而该赋值语句不在该页,测试方法是从赋值页进入测试.
待续!
[ 收藏 ] [ 推荐给网友] [ 共有条专长评论 ]
你对本文的评价:
本文目前专长值:
蚁集网倡议:向地震灾区献爱心
本文发布者:hanhaiyiou (在本营发布了条专长内容)
专业值: | 汗水:
[联系我] [加我为好友]
相关评论(0条)
发表评论

您目前是匿名回复 登录| 注册
提交评论 匿名发表
! 本网信息均由网友提供,并不代表蚁集观点.
热门帖子
秀我专长
有什么专长,对什么感兴趣,来蚁集秀秀吧!
博采众长
蚁集网上有各类专长让你分享。
找到同好
找到、结识志趣相投的朋友。