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

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:如何讓access自動編號從1開始排序?qū)崿F(xiàn)方法
      ACCESS數(shù)據(jù)庫自動編號從1開始-如何讓access自動編號重新從1開始排序,很是疑惑,于是搜集整理一些實用方法,希望可以幫助你們

      說明: 執(zhí)行當前 Web 請求期間,出現(xiàn)未處理的異常。請檢查堆棧跟蹤信息,以了解有關(guān)該錯誤以及代碼中導致錯誤的出處的詳細信息。

      異常詳細信息: System.Data.OleDb.OleDbException: 無法從指定的數(shù)據(jù)表中刪除。

      源錯誤:


      行 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): 無法從指定的數(shù)據(jù)表中刪除。]
      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驗收代碼\Base\App_Code\JetAccess.cs:39
      NewsData.DeleteNews(Int32 id) in d:\SOVO驗收代碼\Base\App_Code\NewsData.cs:29
      _Default.GridView1_RowDeleting(Object sender, GridViewDeleteEventArgs e) in d:\SOVO驗收代碼\Base\System\Default.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

      解決方法如下:
      在數(shù)據(jù)文件*.mdb上右鍵打開屬性對話框,在'安全'標簽下需要添加IUSR_XXX(XXX為你的機器名),也就是添加Internet Guest Account帳戶,再將此帳戶的權(quán)限設為可讀,可寫.(原來這么簡單就解決了的問題,我靠:) )
      如果在右鍵屬性對話框內(nèi)找不到'安全'標簽,需要將文件夾選項下的視圖內(nèi)的'使用簡單文件共享(默認)'的勾去掉.

      原因:
      有幾個主要的錯誤原因:
      這個錯誤發(fā)生在當你的程序試圖執(zhí)行更新數(shù)據(jù)庫或其它類似操作時。這是因為
      ADO由于以下的幾個原因而不能夠?qū)憯?shù)據(jù)庫造成的。
      1。最普遍的原因是匿名用戶帳號(IUSR_MACHINE)對該數(shù)據(jù)庫文件沒有寫權(quán)限。
      要解決這個問題,在管理器中調(diào)整數(shù)據(jù)庫文件的屬性,讓匿名用戶有正確的權(quán)限。
      當使用ACCESS數(shù)據(jù)庫時,不僅要給文件寫的權(quán)限,還要給該目錄寫 的權(quán)限,因為
      Jet需要在該目錄建立一個.ldb文件。
      2。第二個原因是數(shù)據(jù)庫沒有使用正確的模式打開。應該使用下面的方法打開。
      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。你是在同時更新兩個表中的字段,也會出現(xiàn)這個錯誤信息,解決辦法是分開來更新
      這兩個表中各自字段。
      5。當你使用了一個從低版本中(如ACCESS2.0,ACCESS7.0)載入到高版本(ACCESS 2000)
      中的查詢時,在執(zhí)行這個查詢是會出現(xiàn)該錯誤。

      分享:Access日期與時間函數(shù)匯總
      Access日期與時間函數(shù)匯總,需要的朋友可以參考一下

      來源:模板無憂//所屬分類:Access數(shù)據(jù)庫教程/更新時間:2013-04-21
      相關(guān)Access數(shù)據(jù)庫教程