多线程打开ACCESS数据库的奇怪问题,在主线程可以打开,重开县城就不能打开
我现在在程序里遇到一个问题,
由于删除数据库的数据量比较大,所以想开一个线程单独删除,但是在新的线程里单步跟踪的时候数据库却根本不能打开,出问题的那句是hr = db.Open(_T("Microsoft.Jet.OLEDB.4.0"), &dbinit);每次返回的hr都不为0。
但是如果我不是单独开一个线程,则连接删除都没有问题。有人遇到过这样的问题吗?是access对多线程的支持有问题还是因为我的参数不对?下面是我的代码
HRESULT hr;
CDataSource db;
CDBPropSet dbinit(DBPROPSET_DBINIT);
dbinit.AddProperty(DBPROP_AUTH_CACHE_AUTHINFO, true);
dbinit.AddProperty(DBPROP_AUTH_ENCRYPT_PASSWORD, false);
dbinit.AddProperty(DBPROP_AUTH_MASK_PASSWORD, false);
dbinit.AddProperty(DBPROP_AUTH_PASSWORD, OLESTR(""));
dbinit.AddProperty(DBPROP_AUTH_USERID, OLESTR("Admin"));
char PathName[255];
GetModuleFileName( AfxGetInstanceHandle(), PathName,sizeof( PathName ) );
char *a,*b;
a = b = PathName;
while(b)
{
b=strchr(a+1,'\\');
if(b) a=b;
}
*a='\0';
CString temp=PathName;
temp+="\\playback.mdb";//我的数据库
dbinit.AddProperty(DBPROP_INIT_DATASOURCE,temp);
dbinit.AddProperty(DBPROP_INIT_MODE, (long)16);
dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)4);
dbinit.AddProperty(DBPROP_INIT_PROVIDERSTRING, OLESTR(""));
dbinit.AddProperty(DBPROP_INIT_LCID, (long)1033);
//dbinit.AddProperty(DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, false);
hr = db.Open(_T("Microsoft.Jet.OLEDB.4.0"), &dbinit);
if (FAILED(hr))
{
AfxMessageBox("Can't connect to the database");
return hr;
}