先描述一下我的问题
公司开发一套新的打印服务,其中有多个线程可能同时对数据库进行访问,开始的时候用的是一个数据库连接,但是在多个线程同时访问的时候会报数据库异步访问和一些com异常,之后查阅了一些资料,发现在利用ado在进行多线程的数据库访问的时候,最好每个线程对应一个数据库连接,为了方便对这些链接进行管理,自己写了一个数据库连接池,将源码放到这里和大家分享,共同进步,希望能解决一些各位遇到的问题
#pragma once
class DBConnPool
{
private:
std::map<DWORD, CADODatabase*> m_DbConns;//一个线程对应一个数据库连接的指针
CComAutoCriticalSection m_SyncRoot;
public:
CString m_strConn;//数据库连接串
public:
//DBConnPool(void)
//{
//}
DBConnPool(void)
{
}
~DBConnPool(void)
{
Close();
}
private:
BOOL InitDB(CADODatabase* pDbConn)
{
if(!pDbConn->Open(m_strConn))
{

本文介绍了在VC中利用ADO进行多线程数据库访问时遇到的问题及解决方案。通过创建数据库连接池,确保每个线程拥有独立的数据库连接,避免并发访问异常。代码示例展示了如何初始化、获取和关闭连接池中的数据库连接。
最低0.47元/天 解锁文章
4724

被折叠的 条评论
为什么被折叠?



