使用CDatabase类读取Access数据库

//以下是主要代码
void CReadDBDlg::OnRead()
{
 // TODO: Add your control notification handler code here

 CDatabase database;
 CString SqlString;
 CString sCatID, sCategory;
 CString sDriver = "MICROSOFT ACCESS DRIVER (*.mdb)";
 CString sDsn;
 CString sFile = "c://works//ReadDB//Test.mdb";//Change path here
 int iRec = 0; 
 
 // Create ODBC connection dinamically
 sDsn.Format("ODBC;DRIVER={%s};DSN='';DBQ=%s",sDriver,sFile);
 TRY
 {
  // Open the database
  database.Open(NULL,false,false,sDsn);
 
  // Allocate the recordset
  CRecordset recset( &database );

  // Build the SQL statement
  SqlString =  "SELECT CatID, Category "
    "FROM Categories";

  // Execute the query
  recset.Open(CRecordset::forwardOnly,SqlString,CRecordset::readOnly);
  ResetListControl();
 
  // Column width and heading
  m_ListControl.InsertColumn(0,"Cat ID",LVCFMT_LEFT,-1,0);
  m_ListControl.InsertColumn(1,"Category",LVCFMT_LEFT,-1,1);
  m_ListControl.SetColumnWidth(0, 70);
  m_ListControl.SetColumnWidth(1, 200);

  // Loop through each record
  while( !recset.IsEOF() )
  {
   // Copy each column into a variable
   recset.GetFieldValue("CatID",sCatID);
   recset.GetFieldValue("Category",sCategory);

   // Insert values into the list control
   iRec = m_ListControl.InsertItem(0,sCatID,0);
   m_ListControl.SetItemText(0,1,sCategory);

   // goto next record
   recset.MoveNext();
  }
  // Set column width
  //m_ListControl.SetColumnWidth(0, LVSCW_AUTOSIZE);
  //m_ListControl.SetColumnWidth(1, LVSCW_AUTOSIZE);
  // Close the database
  database.Close();
 }
 CATCH(CDBException, e)
 {
  // If a database exception occured, show error msg
  AfxMessageBox("Database error: "+e->m_strError);
 }
 END_CATCH;
}
 

void CReadDBDlg::ResetListControl()
{
 m_ListControl.DeleteAllItems();
 int iNbrOfColumns;
 CHeaderCtrl* pHeader = (CHeaderCtrl*)m_ListControl.GetDlgItem(0);
 if (pHeader)
 {
  iNbrOfColumns = pHeader->GetItemCount();
 }
 for (int i = iNbrOfColumns; i >= 0; i--)
 {
  m_ListControl.DeleteColumn(i);
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值