,,Access数据库提示OleDbException (0x80004005): 操作必须使用一个可更新的查询
使用接近当数据库时,这个问题郁闷了我好几天啊![OleDbException (0x80004005):操作必须使用一个可更新的查询。]
说明:执行当前网请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息:系统数据。OleDb.OleDbException:无法从指定的数据表中删除。
源错误:
行37:comm . CommandText=sqlstr;行38://comm . Prepare();行39:cout=comm . ExecuteNonQuery();行40: 行41:conn . Close();
源文件:d:\SOVO验收代码\Base\App_Code\JetAccess.cs行: 39
[OleDbException (0x80004005):无法从指定的数据表中删除。系统数据。oledb。oledb命令。executecommandtextforsingleresult(tagDBPARAMS dbParams,Object executeResult) 267系统数据。oledb。oledb命令。执行命令文本(对象执行结果)192系统数据。oledb。oledb命令。执行命令(命令行为,对象执行结果)48系统数据。oledb。oledb命令。executereadenerinternal(命令行为行为,字符串方法)106系统数据。oledb。oledb命令。executenonquery()108 jet访问.在d:\SOVO中执行(OleDbParameter[]参数,字符串sqlstr)验收代码\ Base \ App _ Code \ jet access。cs:39新闻数据.删除d:\SOVO中的新闻(Int32 id)验收代码\ Base \ App _ Code \ news data。cs:29 _默认.d:\SOVO中的GridView1_RowDeleting(对象发送方,GridViewDeleteEventArgs e)验收代码\基本\系统\默认。aspx。cs:46系统.网络。ui。web控件。网格视图。on row deleting(GridViewDeleteEventArgs e)133系统web . com。ui。web控件。网格视图。句柄删除(GridView row row,Int32 rowIndex) 604系统web . com。ui。web控件。网格视图。处理事件(EventArgs e,布尔原因验证,字符串验证组)1155系统web . com。ui。web控件。网格视图。raisepostbackevent(字符串事件参数)199系统web . com。ui。web控件。网格视图。系统。网络。ui。ipostbackeventhandler。raisepostbackevent(字符串事件参数)7系统web . com。ui。页面。raisepostbackevent(IPostBackEventHandler源代码管理,字符串eventArgument) 11系统web . com。ui。页面。raisepostbackevent(NameValueCollection发布数据)174系统web . com。ui。页面。processrequestmain(Boolean includesagebeforeasyncpoint,Boolean includesageafterasyncpoint)5102
解决方法如下:在数据文件*.mdb上右键打开属性对话框,在'安全'标签下需要添加IUSR_XXX(XXX为你的机器名),也就是添加互联网来宾帐户帐户,再将此帐户的权限设为可读,可写。(原来这么简单就解决了的问题,我靠:) ) 如果在右键属性对话框内找不到'安全'标签,需要将文件夹选项下的视图内的'使用简单文件共享(默认)'的勾去掉。
原因:该错误有几个主要原因:当您的程序试图更新数据库或其他类似操作时,会出现此错误。这是因为ADO无法写入数据库,原因如下。1。最常见的原因是匿名用户帐户(IUSR_MACHINE)对数据库文件没有写权限。要解决这个问题,请在管理器中调整数据库文件的属性,以便匿名用户拥有正确的权限。当使用ACCESS数据库时,您不仅应该授予对文件的写权限,还应该授予对目录的写权限,因为Jet需要建立一个。目录中的ldb文件。2。第二个原因是数据库没有以正确的模式打开。应该使用以下方法打开它。SQL='更新产品集单价=2;'set=server . createobject(' adodb . connection ')conn . Mode=3 ' ' 3=admodereadwriteconn . open ' mydsn ' conn . execute(SQL)conn . close注意,默认模式设置为0(adModeUnknown),允许更新。3。也可以在ODBC管理器中检查该DSN的只读选项。4。如果同时更新两个表中的字段,也会出现此错误消息。解决方案是分别更新这两个表中各自的字段。5。当您使用从较低版本(例如ACCESS2.0、ACCESS7.0)加载到较高版本(ACCESS 2000)的查询时,在您执行此查询时会出现此错误。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。