我想在vc++中使用一个列表插件显示ACCESS数据表中的内容,下面是我的数据库类代码,请问应该如何设置这个列表插件,并且代码如何写?另外一个问题是我建立了一个添加按钮用来添加数据,但是一点就显示记录集是只读的错误提示,而无法进行数据添加,怎么办? 
people是我的工程名 // odbe.cpp : implementation file 
// #include "stdafx.h" 
#include "people.h" 
#include "odbe.h" #ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif ///////////////////////////////////////////////////////////////////////////// 
// odbe IMPLEMENT_DYNAMIC(odbe, CRecordset) odbe::odbe(CDatabase* pdb) 
: CRecordset(pdb) 

//{{AFX_FIELD_INIT(odbe) 
m_zgbm = _T(""); 
m_xm = _T(""); 
m_xb = _T(""); 
m_mz = _T(""); 
m_nFields = 47; 
//}}AFX_FIELD_INIT 
m_nDefaultType = snapshot; 

CString odbe::GetDefaultConnect() 

return _T("ODBC;DSN=people"); 
} CString odbe::GetDefaultSQL() 

return _T("[m_dadj]"); 
} void odbe::DoFieldExchange(CFieldExchange* pFX) 

//{{AFX_FIELD_MAP(odbe) 
pFX->SetFieldType(CFieldExchange::outputColumn); 
RFX_Text(pFX, _T("[zgbm]"), m_zgbm); 
RFX_Text(pFX, _T("[xm]"), m_xm); 
RFX_Text(pFX, _T("[xb]"), m_xb); 
RFX_Text(pFX, _T("[mz]"), m_mz); 
//}}AFX_FIELD_MAP 
} ///////////////////////////////////////////////////////////////////////////// 
// odbe diagnostics #ifdef _DEBUG 
void odbe::AssertValid() const 

CRecordset::AssertValid(); 
} void odbe::Dump(CDumpContext& dc) const 

CRecordset::Dump(dc); 

#endif //_DEBUG

解决方案 »

  1.   

    看看《ADO开发指南》吧?
    ODBC就是麻烦点,操作差不多。
      

  2.   

    void CBrow::OnButtonSelect() 
    {
    UpdateData(TRUE); if ( strcmp(m_strSelect,"") == 0 )
    {
    AfxMessageBox("请输入你要查询的姓名");
    return;
    } CString strTemp;
    strTemp = "SELECT *  FROM telelist WHERE name like '%" + m_strSelect + "%'";
    m_ListCtrl.DeleteAllItems();
    CADORecordset* pRs = new CADORecordset(CTeleApp::g_pDb);
    CString TempSql;
    int i = -1;
    if(pRs->Open((LPCTSTR) strTemp ))

    {
    while(!pRs->IsEof())
    {
    LV_ITEM lvitem;
    lvitem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;
    lvitem.state = 0;      
    lvitem.stateMask = 0; 
    char temp[50];

    lvitem.iItem = ++i;
    lvitem.iSubItem = 0;
    lvitem.pszText =itoa(i, temp, 10); 
    m_ListCtrl.InsertItem(&lvitem); pRs->GetFieldValue("name",TempSql);
    m_ListCtrl.SetItemText(i, 1, (LPCTSTR)TempSql); pRs->GetFieldValue("tele",TempSql);
    m_ListCtrl.SetItemText(i, 2, (LPCTSTR)TempSql); pRs->GetFieldValue("res",TempSql);
    m_ListCtrl.SetItemText(i, 3, (LPCTSTR)TempSql); pRs->GetFieldValue("ID",TempSql);
    m_ListCtrl.SetItemText(i, 4, (LPCTSTR)TempSql);

    pRs->MoveNext();
    }
    pRs->Close();
    }
    else
    AfxMessageBox("记录集创建失败");
    delete pRs;

    }