odbc oracle 连接超时,关于ODBC驱动访问ORACLE数据库的问题!

使用odbc驱动来访问oracle10g数据库时,发现一个问题:

我们连接到数据库SQLConnect后,程序内存大约开始增加5000K,使用SQLDisconnect,并且free各种HANDLE后程序内存依然没有被释放。 有没有什么办法解决这个问题?

以下是程序,是下载的的官方demo修改的。 SQLConnect这个地方,就算没有连接成功,内存也会增加。

#undef UNICODE

#include

#include

#include

#include

#include

#include

#include

#include

int main(void)

{

SQLHENV     hEnv = NULL;

SQLHDBC     hDbc = NULL;

SQLHSTMT    hStmt = NULL;

int ret = 0;

// Allocate an environment

printf("Alloc henv...\n");

system("pause");

if (SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv) == SQL_ERROR)

{

printf("Unable to allocate an environment handle\n");

exit(-1);

}

// Register this as an application that expects 3.x behavior,

// you must register something if you use AllocHandle

SQLSetEnvAttr(hEnv,

SQL_ATTR_ODBC_VERSION,

(SQLPOINTER)SQL_OV_ODBC3,

0);

// Allocate a connection

SQLCHAR dsn[32] = "ORCL";

SQLCHAR user[32] = "SCOTT";

SQLCHAR passwd[32] = "tiger";

printf("Alloc hdbc...\n");

system("pause");

SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDbc);

//792K

SQLSetConnectAttr(hDbc, SQL_LOGIN_TIMEOUT, 0, 0);

//796K

printf("connect...\n");

system("pause");

ret = SQLConnect(hDbc,dsn,SQL_NTS,user,SQL_NTS,passwd,SQL_NTS);

printf("connect ret : %d\n", ret);

//5956K

#if 0

SQLAllocHandle(SQL_HANDLE_STMT, hDbc, &hStmt);

// Free ODBC handles and exit

if (hStmt)

{

SQLFreeHandle(SQL_HANDLE_STMT, hStmt);

}

ret = SQLEndTran(SQL_HANDLE_DBC, hDbc, SQL_COMMIT);

printf("commit ret : %d\n", ret);

ret = SQLEndTran(SQL_HANDLE_DBC, hDbc, SQL_ROLLBACK);

printf("rollback ret : %d\n", ret);

#endif

printf("disconnect...\n");

system("pause");

ret = SQLDisconnect(hDbc);

printf("disconnect ret : %d\n", ret);

if (hDbc)

{

printf("free hdbc...\n");

system("pause");

SQLFreeHandle(SQL_HANDLE_DBC, hDbc);

}

//5824K

if (hEnv)

{

printf("free henv...\n");

system("pause");

SQLFreeHandle(SQL_HANDLE_ENV, hEnv);

}

printf("done...\n");

system("pause");

//5548K

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值