oracle中句柄是什么意思
感覺說的就是游標:
比如:
ORA-24338: 未執行語句句柄
這個問題主要出現在使用數據庫游標的時候.當執行存儲過程,返回的游標沒有打開時,可能會報這個錯。
游標沒有打開的情況一般是忘記了寫打開游標的語句,也可能是存儲過程中執行出錯,導致最后游標未打開。
再比如:
查看句柄數
SQL> select count(*) from v$open_cursor;
COUNT(*)
----------
1167
未準備語句句柄 什么錯誤阿,的搜索推薦
Warning: ociexecute(): OCIStmtExecute: ORA-24337: 未準備語句句柄 in D:\www\* on line 86
86行和87行分別是
$cursor = OCIParse ($connection, $query) or die(OCIError($connection));
$result = OCIExecute ($cursor) or die(OCIError($connection));
c語言連接SQL Server數據庫并操作表中數據的代碼沒有錯誤,但是無
1、配置ODBC數據源。
2、使用SQL函數進行連接。對于1、配置數據源,配置完以后就可以編程操作數據庫了。
對于2、使用SQL函數進行連接,參考代碼如下:#include
“句柄,句柄無效”是什么意思
但由此而產生的句柄概念也大同小異,比如:*。
模塊(module)*。任務(task)*。
實例(instance)*。文件(file)*。
內存塊(block of memory)*。 菜單(menu)*。
控制(control)*。字體(font)*。
資源(resource),包括圖標(icon),光標(cursor),字符串(string)等*。 GDI對象(GDI object),包括位圖(bitmap),畫刷(brush),元文件(metafile),調色板(palette),畫筆(pen),區域(region),以及設備描述表(device context)。
WINDOWS程序中并不是用物理地址來標識一個內存塊,文件,任務或動態裝入模塊的,相反的,WINDOWS API給這些項目分配確定的句柄,并將句柄返回給應用程序,然后通過句柄來進行操作。 在 WINDOWS句柄有點象C語言中的文件句柄。
從上面的2個定義中的我們可以看到,句柄是一個標識符,是拿來標識對象或者項目的,它就象我們的姓名一樣,每個人都會有一個,不同的人的姓名不一樣,但是,也可能有一個名字和你一樣的人。 從數據類型上來看它只是一個16位的無符號整數。
應用程序幾乎總是通過調用一個WINDOWS函數來獲得一個句柄,之后其他的WINDOWS函數就可以使用該句柄,以引用相應的對象。在WINDOWS編程中會用到大量的句柄,比如:HINSTANCE(實例句柄),HBITMAP(位圖句柄),HDC(設備描述表句柄),HICON(圖標句柄)等等,這當中還有一個通用的句柄,就是HANDLE,比如下面的語句:HINSTANCE hInstance;可以改成:HANDLE hInstance;上面的2句語句都是對的。
一個WINDOWS應用程序可以用不同的方法獲得一個特定項的句柄。許多API函數,諸如CreateWindow,GlobalAlloc,OpenFile的返回值都是一個句柄值。
另外,WINDOWS也能通過應用程序的引出函數將一個句柄作為參數傳送給應用程序,應用程序一旦獲得了一個確定項的句柄,便可在WINDOWS環境下的任何地方對這個句柄進行操作。 其實句柄的大量使用已經影響到了每一個WINDOWS的程序設計。
句柄只有當唯一的確定了一個項目的時候,它才開始有意義。句柄對應著項目表中的一項,而只有WINDOWS本身才能直接存取這個表,應用程序只能通過API函數來處理不同的句柄,舉個例子來說吧!比如:我們可以為我們的應用程序申請一塊內存塊,通過調用API函數GlobalAlloc,來返回一個句柄值:hMem=GlobalAlloc(。
。
。);其實現在hMem的值只是一個索引值,不是物理地址,應用程序還不能直接存取這塊內存。
這兒還有一個話外題,就是,一般情況下我們在編程的時候,給應用程序分配的內存都是可以移動的或者是可以丟棄的,這樣能使有限的內存資源充分利用,所以,在某一個時候我們分配的那塊內存的地址是不確定的,因為他是可以移動的,所以得先鎖定那塊內存塊,這兒應用程序需要調用API函數GlobalLock函數來鎖定句柄。 如下:lpMem=GlobalLock(hMem);這樣應用程序才能存取這塊內存。
我想現在大家已經能對句柄概念有所了解了,我希望我的文章能對大家有所幫助。其實如果你學過SDK編程,那對句柄的概念理解會更好,更深。
提示 文件為無效句柄,無法刪除怎么辦
一、常規解決辦法: 1.注消或重啟電腦,然后再試著刪除。
2.進入“安全模式刪除”。 3.在純DOS命令行下使用DEL,DELTREE和RD命令將其刪除。
4.如果是文件夾中有比較多的子目錄或文件而導致無法刪除,可先刪除該文件夾中的子目錄和文件,再刪除文件夾。 5.在任務管理器中結束*進程,然后在命令提示符窗口刪除文件。
6.如果你有安裝ACDSee,FlashFXP,Nero,Total這幾個軟件,可以嘗試在這幾個軟件中刪除文件夾。 二、高級解決方案: 1.磁盤錯誤 運行磁盤掃描,并掃描文件所在分區,掃描前確定已選上修復文件和壞扇區,全面掃描所有選項,掃描后再刪除文件。
2.預讀機制: 某些媒體播放中斷或正在預覽時會造成無法刪除。在“運行”框中輸入:REGSVR32 /U *,注銷掉預讀功能。
或刪除注冊表中下面這個鍵值:[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{87D62D94-71B3-4b9a-9489-5FE6850DC73E}\InProcServer32]。 3.防火墻: 由于反病毒軟件在查毒時會占用正在檢查的文件,從而導致執行刪除時提示文件正在使用,這時可試著暫時關閉它的即時監控程序,或許可以解決。
*、WPS系列軟件: OFFice的非法關閉也會造成文件無法刪除或改名。重新運行該程序,然后正常關閉,再刪除文件。
5.借助WinRAR: 右擊要刪除的文件夾,選擇“添加到壓縮文件”。在彈出的對話框中選中“壓縮后刪除源文件,”隨便寫個壓縮包名,點確定。
6.權限問題: 如果是2000和xp系統,請先確定是否有權限刪除這個文件或文件夾。 7.可執行文件的刪除: 如果可執行文件的映像或程序所調用的DLL動態鏈接庫文件還在內存中未釋放,刪除時就會提示文件正在使用,解決方法是刪除系統的頁面文件,Win98中是*,Win2000/XP是*。
注意要在DOS下刪除。 8.文件粉碎法: 使用文件粉碎機,如File Pulverizer,可以徹底刪除一些頑固文件。
三、制作一個無法刪除的“文件保險箱” 文件夾無法刪除,未必就是不好的事情,如果把一些重要的文件放在這個目錄中,不就可以避免誤刪了嗎?一個文件名只包含空格的文件夾在Windows中是不允許創建和刪除的,但在DOS下卻可以創建文件名包含\的文件夾。 在我們使用Windows的過程中,會遇到各種各樣的問題。
即使是最簡單的刪除文件也可能遇到麻煩,要么系統提示“文件正在被另一個人或程序使用”,要么就是報告“訪問被拒絕”……如果你也遇到過這種情況,不妨看看本文。 原因一:文件正在使用中 在刪除文件時,經常會遇到的一個問題是,文件正在使用,無法刪除。
如果試圖刪除以獨占訪問而不是以共享訪問方式打開,并且正在使用中的文件時,系統就會出現錯誤提示:“無法刪除xxx:文件正在被另一個人或程序使用”。而另一種情況則是,能夠使用刪除命令刪除文件,但在打開文件的進程釋放該文件之前,文件實際上并未刪除。
要解決上述問題,需要確定擁有文件打開句柄的進程,然后關閉此進程。在以前的Windows中,我們可以使用資源工具包的*。
但在XP中,安裝好的Support Tools卻不帶*。不過,XP提供了一個新的*命令行工具,它能夠報告進程打開的各個文件。
與*相似,*也要求打開系統內核監視,這會消耗一些內存,并降低系統操作的性能。打開系統監視的命令是“Openfiles /local on”,它會啟用系統全局標志“維護對象列表”,需重新啟動系統才能生效。
重新啟動系統后,在命令提示符下執行不帶參數的“Openfiles”,即可看到各個進程打開文件的清單。 原因二:文件系統損壞 磁盤上的壞區、其他硬件故障或者軟件錯誤都可能會損壞文件系統,使文件出現問題而無法刪除。
典型操作失敗的方式可能各不相同,當檢測到文件系統損壞時,通常會收到一條提示運行Chkdsk的信息。 如果遇到這種情況,可以在磁盤卷上運行Chkdsk實用工具以糾正任何存在的錯誤。
根據損壞的性質,Chkdsk也許能夠恢復文件數據,也許無法恢復,但Chkdsk可以使文件系統返回到一種在內部一致的狀態。有關Chkdsk實用工具的命令及參數,可以在命令提示符下執行“Chkdsk /?”查閱。
原因三:文件使用了存取控制列表 如果某個文件使用了存取控制列表(Access Control List,簡稱ACL),而操作者又沒有相應的權限,那么刪除文件時就可能出現“訪問被拒絕”的提示。 通常情況下,管理員具有取得任何文件所有權的隱含能力,文件所有者也具有修改文件權限的隱含能力。
不過,這些默認的權限是可以被修改的。 要解決因ACL導致文件無法刪除的問題,就必須以具有相應權限的用戶身份登錄,或者是賦予自己刪除文件的權限,然后才能刪除文件。
要注意的是,操作者必須擁有這些文件的所有權才能更改權限。如果是因為文件使用了不規范的ACL而不能使用某些安全工具顯示或修改其權限時,可以嘗試使用命令行工具*進行修改。
原因四:文件名使用了一個保留名稱 眾所周知,像AUX、LPT1這樣的名稱是為舊式DOS設備保留的。為了向后兼容,在Windows中不允許使用這些文件名,也不能使用典。