如何在AfxBeginThread中使用ado
有个问题请教大家。我想在线程中更新数据库。
在窗口中
void CAdoTestDlg::OnTest()
{
HWND hWnd=GetSafeHwnd();
AfxBeginThread(pro1,(LPVOID)(&hWnd));
}
同时我定义了
UINT pro1(LPVOID pParam)
{
_RecordsetPtr pPtr;
if (FAILED(pPtr.CreateInstance(_uuidof(Recordset))))
{
AfxMessageBox("Create Recordset Instance failed!");
}
CString strSRC="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\WaKi\\xmltest\\db2.mdb;Persist Security Info=False";
CString strSQL = "select * from tb1";
_variant_t varSRC(strSRC);
_variant_t varSQL(strSQL);
_bstr_t bstrSRC(strSRC);
if(FAILED(pPtr->Open(varSQL,varSRC,adOpenStatic,adLockOptimistic,adCmdText)))
{
AfxMessageBox("Open table failed!");
pPtr.Release();
return FALSE;
}
while(!pPtr->GetadoEOF())
{
_variant_t varNo;
_variant_t varName;
//_variant_t varSex;
//_variant_t varAddress;
varNo = pPtr->GetCollect ("ID");
varName = pPtr->GetCollect ("Name");
//varSex = pPtr->GetCollect ("gender");
//varAddress = pPtr->GetCollect ("address");
CString strNo =(char *)_bstr_t(varNo);
CString strName =(char *)_bstr_t(varName);
//CString strSex =(char *)_bstr_t(varSex);
//CString strAddress =(char *)_bstr_t(varAddress);
strNo.TrimRight();
strName.TrimRight();
//strSex.TrimRight();
//strAddress.TrimRight();
pPtr->MoveNext();
}
pPtr->Close();
pPtr.Release();
return 0;
}
为什么提示我 ("Create Recordset Instance failed!");
上面的处理,放在 窗口中的函数就可以执行,就是进程外面。
该怎么办,谢谢了