我创建了个MFC得对话框项目
然后拖了个列表框和一个BUTTON控件,功能很简单我点击控件后,读出数据到列表种,我的结构如下
我新建了个Data得类,BASS CLASS我选择得是CAnimateCtrl
然后我在头文件种如下写得
public:
Data();
_RecordsetPtr Open(CString strsql,int option);//我想返回个数据集
void Close();//然后关闭销毁2个对象
然后是CPP文件
//打开数据库,然后返回个数据集对象
_RecordsetPtr Data::Open(CString strsql,int option)
{
//初始化ADO连接COM
CoInitialize(NULL);
//打开数据库
pConn->Open("","","",adConnectUnspecified);
//执行数据库
pRst=pConn->Execute((_bstr_t)strsql,NULL,option); return pRst;
}//销毁数据集和连接对象
void Data::Close()
{
pRst->Close();
pConn->Close();
pRst.Release();
pConn.Release();
CoUninitialize();
}然后我在控件的单击方法中是如下写的,而且我也在这类的头文件中引入了data.h和ADO的DLL文件
_RecordsetPtr pRst(__uuidof(Recordset));
CListBox *m_listbox=((CListBox*)GetDlgItem(IDC_LIST1));pRst=daobj.Open("select user_accounts from User_Info",1);
while(!pRst->rsEOF)
{
m_listbox->AddString((_bstr_t)(pRst->GetCollect("user_accounts")));
pRst->MoveNext();
}
daobj.Close();我现咱编译可以通过,但是运行就错了.请高手解决下.
然后拖了个列表框和一个BUTTON控件,功能很简单我点击控件后,读出数据到列表种,我的结构如下
我新建了个Data得类,BASS CLASS我选择得是CAnimateCtrl
然后我在头文件种如下写得
public:
Data();
_RecordsetPtr Open(CString strsql,int option);//我想返回个数据集
void Close();//然后关闭销毁2个对象
然后是CPP文件
//打开数据库,然后返回个数据集对象
_RecordsetPtr Data::Open(CString strsql,int option)
{
//初始化ADO连接COM
CoInitialize(NULL);
//打开数据库
pConn->Open("","","",adConnectUnspecified);
//执行数据库
pRst=pConn->Execute((_bstr_t)strsql,NULL,option); return pRst;
}//销毁数据集和连接对象
void Data::Close()
{
pRst->Close();
pConn->Close();
pRst.Release();
pConn.Release();
CoUninitialize();
}然后我在控件的单击方法中是如下写的,而且我也在这类的头文件中引入了data.h和ADO的DLL文件
_RecordsetPtr pRst(__uuidof(Recordset));
CListBox *m_listbox=((CListBox*)GetDlgItem(IDC_LIST1));pRst=daobj.Open("select user_accounts from User_Info",1);
while(!pRst->rsEOF)
{
m_listbox->AddString((_bstr_t)(pRst->GetCollect("user_accounts")));
pRst->MoveNext();
}
daobj.Close();我现咱编译可以通过,但是运行就错了.请高手解决下.
2、改为 _RecordsetPtr& Open(CString strsql,int option)
http://www.vckbase.com/document/viewdoc/?id=1557
// 数据库连接对象
_ConnectionPtr pConn(__uuidof(Connection));
// 数据集对象
_RecordsetPtr pRst(__uuidof(Recordset));
m_pRecordset->Open("select top 2000 * from account_info where account not in (select top 0 account from account_info)",
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText); 提取数据集
while(!m_pRecordset->adoEOF)
{
strPD = (char *)(_bstr_t)m_pRecordset->GetCollect("account");
strID = (char *)(_bstr_t)m_pRecordset->GetCollect("pwd");
//st_account account_info;
//account_info.account = strPD;
//account_info.secret = strID;
//account.push_back(account_info);
m_pRecordset->MoveNext();
}