未执行语句句柄


oracle中句柄是什么意思

感觉说的就是游标:

比如:

ORA24338: 未执行语句句柄

这个问题主要出现在使用数据库游标的时候.当执行存储过程,返回的游标没有打开时,可能会报这个错。

游标没有打开的情况一般是忘记了写打开游标的语句,也可能是存储过程中执行出错,导致最后游标未打开。

再比如:

查看句柄数

SQL> select count(*) from v$open_cursor;

COUNT(*)

1167

未准备语句句柄 什么错误阿,的搜索推荐

Warning: ociexecute(): OCIStmtExecute: ORA24337: 未准备语句句柄 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#include#includevoid main(){HENV henv; //环境句柄HDBC hdbc; //数据源句柄HSTMT hstmt; //执行语句句柄unsigned char datasource[]=”数据源名称”; //即源中设置的源名称unsigned char user[]= “用户名”; //数据库的帐户名unsigned char pwd[]= “密码”; //数据库的密码unsigned char search[]=”select xm from stu where xh=0”;SQLRETURN retcode; //记录各SQL函数的返回情况// 分配环境句柄retcode= SQLAllocEnv(&henv); // 等介于 SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL, &henv);// 设置ODBC环境版本号为3.0retcode= SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);// 分配连接句柄retcode= SQLAllocConnect(henv,&hdbc); // 等介于 SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);。

“句柄,句柄无效”是什么意思

但由此而产生的句柄概念也大同小异,比如:*。

模块(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_MACHINESOFTWAREClassesCLSID{87D62D9471B34b9a94895FE6850DC73E}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中不允许使用这些文件名,也不能使用典。