VC7+OCCI连接ORACLE 成功运行之后文件一直被占用,无法Update

ivanyoung66 2009-12-17 04:35:13
如题,我用VS2003+OCCI做连接ORACLE的东西,当我运行一次之后,修改源代码就无法再生成,原因是有文件被占用,如下:

------ 已启动生成: 项目: 命令行数据库连接, 配置: Debug Win32 ------

正在链接...
LINK : fatal error LNK1168: 无法打开 Debug/命令行数据库连接.exe 进行写入

生成日志保存在“file://f:\Project\Visual Studio 2003 Project\命令行数据库连接\Debug\BuildLog.htm”中
命令行数据库连接 - 1 错误,0 警告


---------------------- 完成 ---------------------

生成: 0 已成功, 1 已失败, 0 已跳过

直接删除也提示文件正在使用,不知道这个是我写的代码结束连接的问题,还是其他的哪里问题?有没有哪位大侠遇到过?
我的代码:
#include "Stdafx.h"
#include <iostream>
#include <occi.h>

using namespace std;
using namespace oracle::occi;

Environment *env;
Connection *conn;
Statement *stmt;
ResultSet *rset;
string tableName;
string typeName;

void main()
{
Environment * env=Environment::createEnvironment(Environment::DEFAULT);
cout << "Ready, let's go!" << endl;

cout << "Trying" << endl;
Connection *conn=env->createConnection("broadsky","111111","");
cout << "Done!" << endl;
if (conn)
cout << "SUCCESS - createConnection" <<"\tconn="<<conn<< endl;
else
cout << "FAILURE - createConnection" <<"\tconn="<<conn<<endl;
stmt = conn->createStatement("SELECT * FROM t1");
rset=stmt->executeQuery();
while (rset->next())
{
cout<<"the empno is:"<<rset->getString(1)<<"\t"<<rset->getString(2)<<"\t";
cout<<rset->getString(3)<<"\t"<<rset->getString(4)<<"\t"<<rset->getString(5)<<"\t"<<endl;
}
stmt->closeResultSet (rset);
conn->terminateStatement (stmt);
env->terminateConnection (conn);
Environment::terminateEnvironment(env);
system("PAUSE");
}
...全文
77 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ivanyoung66 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 crazylaa 的回复:]
建议楼主去vc 版问问吧。。
[/Quote]嗯,是关闭连接的意思,system("PAUSE"); 是一个暂停函数,为了防止CMD一闪退出添加的,在别的程序里应用过,这句应该没问题,找了一些例子,释放句柄、内存方面该释放的也都释放了,去VC区问问~是个好主意~
crazylaa 2009-12-17
  • 打赏
  • 举报
回复
建议楼主去vc 版问问吧。。
crazylaa 2009-12-17
  • 打赏
  • 举报
回复
肯定不用,原因是什么暂时还不清楚。
vc里面terminateConnection 就是closeConnection吗?另外
system("PAUSE");
是不是代表退出?
vc里面的内存释放要及时吧。我觉得应该是代码或者编译器的问题,不会是数据库的问题。
ivanyoung66 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 crazylaa 的回复:]
运行之后进程没杀掉吧?用任务管理器把那个exe杀掉都不行嘛?那就重启机器。感觉是exe文件没有退出还在内存中,所以无法覆盖。
[/Quote]
进程已经KILL掉了,还是无法删除,不会是需要每次试运行之后都重启下机器吧。。。太悲哀了~
crazylaa 2009-12-17
  • 打赏
  • 举报
回复
运行之后进程没杀掉吧?用任务管理器把那个exe杀掉都不行嘛?那就重启机器。感觉是exe文件没有退出还在内存中,所以无法覆盖。

17,134

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧