發布:2023-06-08 17:20:00編輯:視頻君來源:視頻教程網
錯誤“操作必須使用一個可更新的查詢”原因及解決辦法
翻譯得比較匆忙,呵呵。
錯誤信息:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] Operation must use an
updateable query.
或者是:
Microsoft JET Database Engine (0x80004005)
操作必須使用一個可更新的查詢。
原因:
有幾個主要的錯誤原因:
這個錯誤發生在當你的程序試圖執行更新數據庫或其它類似操作時。這是因為
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)
中的查詢時,在執行這個查詢是會出現該錯誤。
系統軟件
系統軟件
系統軟件是指控制和協調計算機及外部設備,支持應用的軟件開發和運行的系統,是無需用戶干預的各種程序的集合,主要功能是調度,監控和維護計算機系統;負責管理計算機系統中各種獨立的硬件,使得它們可以協調工作。系統軟件使得計算機使用者和其他軟件將計算機當作一個整體而不需要顧及到底層每個硬件是如何工作的。
系統軟件主要包括:操作系統,語言處理程序,高級語言系統和各種服務性程序等.
其中:操作系統如我們常用的Windows,linux,Dos,unix等。
語言處理程序如匯編語言匯編器,C語言編譯、連接器等,
一般來講,系統軟件包括操作系統和一系列基本的工具(比如編譯器,數據庫管理,存儲器格式化,文件系統管理,用戶身份驗證,驅動管理,網絡連接等方面的工具)。
是支持計算機系統正常運行并實現用戶操作的那部分軟件。
一般是在計算機系統購買時隨機攜帶的,也可以根據需要另行安裝。
系統軟件的主要特征是:
與硬件有很強的交互性
能對資源共享進行調度管理
能解決并發操作處理中存在的協調問題
其中的數據結構復雜,外部接口多樣化,便于用戶反復使用.
這個錯誤一般只有在使用ACCESS數據庫時才會出現。因為ACCESS在打開時會生成一個臨時文件.ldb,這時文件夾如果沒有寫入權限時,則會發生錯誤。
解決方法如下:
①如果你的系統是Win2003,則要在你網站目錄處右擊“屬性”->“安全”->添加->輸入“Everyone”,并給其完全控制的權限才能正常使用。
②如果你的系統是WinXP,這個問題一般發生在磁盤格式為NTFS的情況下。點擊“工具”->“文件夾選項”->“查看”,找到“使用簡單文件共享(推薦)”這項,把前面的勾去掉。
在網站所在文件夾上單擊右鍵,選擇“屬性”,這時就能找到“安全”的選項卡,添加一個用戶Everyone,權限設為“完全控制”。
故障原因
此類錯誤一般出現于文件系統為NTFS格式中,是IIS匿名帳號(IUSR_計算機名)對相關文件、文件夾操作權限不足引起的。
一、存放數據庫文件夾對IIS匿名帳號沒有寫入、修改權限,錯誤表現為無法對數據庫進行更新、寫入
二、 系統臨時文件夾目錄對IIS匿名帳號沒有寫入、修改權限,錯誤表現為訪問服務器上任何采用Microsoft JET Database Engine 鏈接Access類數據庫的文件都是出錯。正常情況下是不會出現這個錯誤的,當使用某些系統垃圾清理優化工具、或其它一些因素可能會導致這個目錄權限發生 改變。所以請慎重使用此類工具。
解決辦法
一、檢查存放Microsoft Access數據庫文件的文件夾是否有對IIS匿名帳號有寫入權限,如果沒有,請賦于寫入權限,特別是當錯誤信息為(Microsoft JET Database Engine 錯誤 '80004005' 操作必須使用一個可更新的查詢。)時。
二、JET 引擎在鏈接數據庫的時候會在%windir%/temp/目錄下創建臨時文件,而IIS匿名帳號對%windir%/temp/目錄操作權限不夠,添加IIS匿名帳號(IUSR_計算機名)對%windir%/temp/的讀寫權限即可。
其它一些未指定的錯誤,可以嘗試重新注冊ASP腳本解釋鏈接庫文件。
依順序運行以下命令:
1.regsvr32 jscript.dll
2.regsvr32 vbscript.dll
3.iisreset