1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > odbc oracle 连接超时 关于ODBC驱动访问ORACLE数据库的问题!

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

时间:2018-11-07 08:02:15

相关推荐

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;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。