因為以前沒有考慮到程式要連接配接資料庫,是以在建立程式時選擇了不支援資料庫,現在突然要加資料庫,還是蠻麻煩的,看了兩天相關的文章,終于搞定了,希望能幫助和我遇到同樣問題的朋友。
建立MFC單文檔,在菜單欄中,添加指令,用于連接配接對話框,在資源中添加對話框,并建立對話框類,詳細方法看相關資料。
這裡建立的對話框類為cliebiaotrldlg,在對話框中添加一個清單控件,添加一個顯示按鈕。右鍵添加控件變量CListCtrl m_List,右鍵檢視清單控件的屬性,在樣式中檢視下拉菜單中選擇report。
添加變量_ConnectionPtr , _RecordsetPtr
class cliebiaotrldlg : public CDialog
{
// Construction
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
public:
cliebiaotrldlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(cliebiaotrldlg)
enum { IDD = IDD_DIALOG2 };
CListCtrl m_List;
}
初始化:初始化清單控件及ADO
BOOL cliebiaotrldlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
LVCOLUMN column;
column.mask=LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
column.fmt=LVCFMT_LEFT; //左對齊
column.cx=70; //寬度
column.iSubItem=0; //第一列
column.pszText="ID"; //标題
m_List.InsertColumn(0,&column);//設定第一列
column.iSubItem=1;
column.pszText="NAME";
m_List.InsertColumn(1,&column);//設定第二列
column.iSubItem=2;
column.pszText="MONEY";
m_List.InsertColumn(2,&column);//設定第三列
::CoInitialize(NULL);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
顯示程式:
m_pConnection.CreateInstance(_uuidof(Connection)); //初始化Connection指針
m_pRecordset.CreateInstance(_uuidof(Recordset));//初始化Recordset指針
_variant_t var;
CString strName,strAge;
try
{
m_pConnection->Open("DSN=ADOTest","","",0); //連接配接叫作ADOTest的ODBC資料源
//注意:這是連接配接不需要使用者ID或密碼的open 函數
CString strSql="select * from middle";
BSTR bstrSQL = strSql.AllocSysString();
m_pRecordset->Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);
int i=0;
while(!m_pRecordset->adoEOF)//周遊所有記錄
{
m_List.InsertItem(i,"");//隻有加上這一步才能将資料添加進去
m_List.SetItemText(i,0,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("id"));
m_List.SetItemText(i,1,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("name"));
m_List.SetItemText(i,2,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("money"));
i++;
}
m_pRecordset->MoveNext();//轉到下一條紀錄
}
}
catch (CMemoryException* e)
{
}
參考文章:
http://apps.hi.baidu.com/share/detail/17239441
http://zhidao.baidu.com/question/126535852.html?fr=ala0