社区
数据库
帖子详情
SQLAllocHandle分配SQL语句句柄时不返回了,程序死到这了
stavck
2005-08-24 10:38:56
我写了一个使用ODBC API 访问access数据库的程序,正常测试都没有什么问题,都通过了.
这时想试一试数据库异常时候的程序的错误处理过程是否正常,就把Access打开,使用独占方式打开一个程序要访问的表,这时在调试程序,发现问题:
当程序想查询此表时,程序会停到SQLAllocHandle,该函数并不返回,没有任务错误提示.
不知道大家碰到过没有?
...全文
322
11
打赏
收藏
SQLAllocHandle分配SQL语句句柄时不返回了,程序死到这了
我写了一个使用ODBC API 访问access数据库的程序,正常测试都没有什么问题,都通过了. 这时想试一试数据库异常时候的程序的错误处理过程是否正常,就把Access打开,使用独占方式打开一个程序要访问的表,这时在调试程序,发现问题: 当程序想查询此表时,程序会停到SQLAllocHandle,该函数并不返回,没有任务错误提示. 不知道大家碰到过没有?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
stavck
2005-08-29
打赏
举报
回复
真的这么难么?
skyfine
2005-08-26
打赏
举报
回复
这些东西,太深了不懂。
不过有个小想法,做一个监听线程。
stavck
2005-08-26
打赏
举报
回复
今天还是没有搞定,有高手没?
BuZhang_AP97091
2005-08-25
打赏
举报
回复
用副线程去读取数据库,不要让界面线程没反应和反应迟顿
stavck
2005-08-25
打赏
举报
回复
是的,可能我没有说明白,如果是数据库连接断开的话,辅助线程再操作,可以报错,然后继续的.
问题就是当主线程重新连接了数据库,这时,辅助线程再使用数据库连接句柄进行任何操作,都会死掉.
to:DentistryDoctor
您说的同步是怎么一回事?
注:
辅助线程是通过数据库连接句柄的指针访问的
DentistryDoctor
2005-08-25
打赏
举报
回复
试试在连接,断开及访问数据库时进行一下同步。
stavck
2005-08-25
打赏
举报
回复
老大,odbc连接数据我还是会的,问题是现在主线程控制数据库的连接,辅助线程使用这个数据库连接进行表操作,如果主线程不重连数据库,那么辅助线程都运行得很high啊,但是如果主线程出现异常,需要重连数据库时,辅助线程就不顶了.
辅助线程是不负责连接数据库的.所有也没什么超时设置的问题.
程序将来要用到oracle上,不可能每个线程分配一个数据库连接的,支持50个连接的oracle数据库可是要卖26w的.
stavck
2005-08-25
打赏
举报
回复
不会是access的问题吧?
DentistryDoctor
2005-08-25
打赏
举报
回复
BOOL CODBCManager::Connect()
{
SQLRETURN retcode;
retcode = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&m_henv);
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode = SQLSetEnvAttr(m_henv,SQL_ATTR_ODBC_VERSION,(void *)SQL_OV_ODBC3,0);
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode = SQLAllocHandle(SQL_HANDLE_DBC,m_henv,&m_hdbc);
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
SQLSetConnectAttr(m_hdbc,(long)SQL_LOGIN_TIMEOUT,(void *)5,0);
if(m_bAutoCommit)
SQLSetConnectAttr(m_hdbc,(long)SQL_ATTR_AUTOCOMMIT,(void *)SQL_AUTOCOMMIT_ON,0);
else
SQLSetConnectAttr(m_hdbc,(long)SQL_ATTR_AUTOCOMMIT,(void *)SQL_AUTOCOMMIT_OFF,0);
retcode = SQLConnect(m_hdbc,(SQLCHAR *)(LPTSTR)m_szDSN,SQL_NTS,
(SQLCHAR *)(LPTSTR)m_szUserName,SQL_NTS,(SQLCHAR *)(LPTSTR)m_szPassword,SQL_NTS);
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode = SQLAllocHandle(SQL_HANDLE_STMT,m_hdbc,&m_hstmt);
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
return TRUE;
else
PromptSQLError(SQL_HANDLE_STMT,m_hstmt,(SQLCHAR*)"SQL_HANDLE_STMT");
SQLDisconnect(m_hdbc);
}
else
PromptSQLError(SQL_HANDLE_DBC,m_hdbc,(SQLCHAR*)"SQL_HANDLE_DBC");
SQLFreeHandle(SQL_HANDLE_DBC,m_hdbc);
}
else
PromptSQLError(SQL_HANDLE_ENV,m_henv,(SQLCHAR*)"SQL_HANDLE_ENV");
}
else
PromptSQLError(SQL_HANDLE_ENV,m_henv,(SQLCHAR*)"SQL_HANDLE_ENV");
SQLFreeHandle(SQL_HANDLE_ENV,m_henv);
}
return FALSE;
}
//SQLSetConnectAttr(m_hdbc,(long)SQL_LOGIN_TIMEOUT,(void *)5,0);一句用于设置连接超时为5秒
DentistryDoctor
2005-08-25
打赏
举报
回复
很久没用Access了。
stavck
2005-08-25
打赏
举报
回复
我程序是这样的,主线程中有一个数据库连接,有3个辅助的线程使用这个连接去操作表,当主线程把数据库的连接重新连接后,辅助线程就会停在分配sql语句句柄那个函数的地方.
如果是某一个线程重新连接数据库的话,那么他再去操作数据库,是可以的.而其他的线程则不行
现在我怀疑是不是对多线程支持的问题啊!
ODBC学习笔记(1)--
句柄
ODBC应用
程序
的最终目的是通过ODBC API函数执行
SQL
语句
,完成各种数据库操作。ODBC对数据库的访问通过
句柄
来实现, 常见的四个
句柄
有环境
句柄
,连接
句柄
,语句
句柄
和描述
句柄
。 环境
句柄
:建立应用
程序
与ODBC系统...
数据库系统概论 第八章 数据库编程(3)ODBC的工作流程,配置数据源,初始化环境,建立连接,
分配
语句
句柄
,种植处理,将KingbaseES数据库中Student表的数据备份到
SQL
SERVER数据
4.
分配
语句
句柄
5.执行
SQL
语句
[例13]将KingbaseES数据库中Student表的数据备份到
SQL
SERVER数据库中。 该应用涉及两个不同的RDBMS中的数据源 使用ODBC来开发应用
程序
,只要改变应用
程序
中连接函数...
ODBC学习笔记—
SQL
Alloc
Handle
顾名思义,该函数就是用来
分配
句柄
的,
句柄
类型参考参数详解。
SQL
RETURN
SQL
Alloc
Handle
(
SQL
SMALLINT
Handle
Type,
SQL
HANDLE
Input
Handle
,
SQL
HANDLE
* Output
Handle
Ptr); 参数详解: Handl
SQL
Alloc
Handle
函数定义:顾名思义,该函数就是用来
分配
句柄
的,
句柄
类型参考参数详解。
SQL
RETURN
SQL
Alloc
Handle
(
SQL
SMALLINT
Handle
Type,
SQL
HANDLE
Input
Handle
,
SQL
HANDLE
*Output
Handle
Ptr);参数详解:
Handle
Type:输入变量该变...
金仓数据库KingbaseES ODBC使用指南三--开发用例流程
利用
分配
后的连接
句柄
调用
SQL
Connect,
SQL
BrowseConnect 或者
SQL
DriverConnect 连接到数据源。它指定数据源名以及完成连接所需的任何附加信息。 处理一个或多个
SQL
语句: 应用
程序
将
SQL
文本串放置..
数据库
4,011
社区成员
39,816
社区内容
发帖
与我相关
我的任务
数据库
VC/MFC 数据库
复制链接
扫一扫
分享
社区描述
VC/MFC 数据库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章