使用Access当数据库时,这个问题郁闷了我好几天啊![OleDbException(0x80004005):操作必须使用一个可更新的查询。]
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.OleDb.OleDbException: 无法从指定的数据表中删除。

源错误:


行 37: comm.CommandText = sqlstr;
行 38: //comm.Prepare();
行 39: cout = comm.ExecuteNonQuery();
行 40:
行 41: conn.Close();


源文件: d:SOVO验收代码BaseApp_CodeJetAccess.cs 行: 39

[OleDbException (0x80004005): 无法从指定的数据表中删除。]
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +267
System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +192
System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +48
System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +106
System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +108
JetAccess.Execute(OleDbParameter[] parameters, String sqlstr) in d:SOVO验收代码BaseApp_CodeJetAccess.cs:39
NewsData.DeleteNews(Int32 id) in d:SOVO验收代码BaseApp_CodeNewsData.cs:29
_Default.GridView1_RowDeleting(Object sender, GridViewDeleteEventArgs e) in d:SOVO验收代码BaseSystemDefault.aspx.cs:46
System.Web.UI.WebControls.GridView.OnRowDeleting(GridViewDeleteEventArgs e) +133
System.Web.UI.WebControls.GridView.HandleDelete(GridViewRow row, Int32 rowIndex) +604
System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +1155
System.Web.UI.WebControls.GridView.RaisePostBackEvent(String eventArgument) +199
System.Web.UI.WebControls.GridView.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +174
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102

解决方法如下:
在数据文件*.mdb上右键打开属性对话框,在'安全'标签下需要添加IUSR_XXX(XXX为你的机器名),也就是添加Internet Guest Account帐户,再将此帐户的权限设为可读,可写.(原来这么简单就解决了的问题,我靠:) )
如果在右键属性对话框内找不到'安全'标签,需要将文件夹选项下的视图内的'使用简单文件共享(默认)'的勾去掉.

原因:
有几个主要的错误原因:
这个错误发生在当你的程序试图执行更新数据库或其它类似操作时。这是因为
ADO由于以下的几个原因而不能够写数据库造成的。
1。最普遍的原因是匿名用户帐号(IUSR_MACHINE)对该数据库文件没有写权限。
要解决这个问题,在管理器中调整数据库文件的属性,让匿名用户有正确的权限。
当使用ACCESS数据库时,不仅要给文件写的权限,还要给该目录写 的权限,因为
Jet需要在该目录建立一个.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)
中的查询时,在执行这个查询是会出现该错误。
最新资讯
这是真的,大脑死亡四小时后,又被这群科学家复活了

这是真的,大脑死亡四小

4月18日,Nature封面重磅发布耶鲁大学最新研究:猪大脑在
避免伦理争议?科学家在子宫里矫正胚胎致命基因突变

避免伦理争议?科学家在

本周,最新一期《科学》子刊《Science Translational Me
虫洞不能让你回到过去,但可用来躲避星际战争

虫洞不能让你回到过去

如果外星人之间发生星际战争,而地球人打不过外星人,那么
特斯拉缩减董事会成员 马斯克的三个盟友将离开

特斯拉缩减董事会成员

特斯拉表示,将在今明两年把董事会从11名董事缩减至7名,
欧洲消费者组织敦促监管机构对Facebook展开联合审查

欧洲消费者组织敦促监

欧洲消费者组织BEUC敦促欧盟反垄断监管机构和隐私保护
名不见经传的Zoom为什么比独角兽Pinterest表现惊艳

名不见经传的Zoom为什

直到最近,除了各公司的IT部门,很少有人听说过Zoom Video
最新文章
八步解决ACCESS自动编号问题(将SQL SERVER 2000数据库,转换为ACCESS数据库)

八步解决ACCESS自动编

这篇文章主要介绍了将SQLSERVER2000数据库转换为ACCES
Access转Sql Server问题 实例说明

Access转Sql Server问

对于网上的一些access转sqlserver的解决方法,比较多,其
Access字符串处理函数整理

Access字符串处理函数

在access数据库中用的到的一些字符串处理函数代码,需要
access中显示MSysObjects系统表的设置方法

access中显示MSysObje

这篇文章主要介绍了access中显示MSysObjects系统表的
Access使用查询--1.1. 用选择查询建立计算字段

Access使用查询--1.1.

1.用选择查询建立计算字段建一个选择查询,添加“车队运
用 INNER JOIN语法联接多个表建记录集

用 INNER JOIN语法联

用INNERJOIN语法联接多个表建记录集多表联接建立记录