久久青草精品A片狠狠,日韩欧美视频一区二区,亚洲国码AV日韩,国产精品黄在

幫助中心 >  技術知識庫 >  數據庫 >  相關技術支持 >  Access數據庫提示OleDbException (0x80004005): 操作必須使用一個可更新的查詢

Access數據庫提示OleDbException (0x80004005): 操作必須使用一個可更新的查詢

2017-01-11 18:37:20 11858

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) 

中的查詢時,在執行這個查詢是會出現該錯誤。


提交成功!非常感謝您的反饋,我們會繼續努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務,我們很需要您進一步的反饋信息:

在文檔使用中是否遇到以下問題: