分享知识

与大家一起分享知识

C++博客 首页 新随笔 联系 聚合 管理
  19 Posts :: 3 Stories :: 45 Comments :: 0 Trackbacks

由于项目要发布一个单机版,原来用的数据库是大型数据库。需要在单机版中用Access比较方便,另外也不能让用户自己创建数据源,最终的方案就是在程序中直接访问(*.mdb)Access数据库文件,下面简要给出在VC6.0中的访问Access数据库文件的方法:
注:data.mdb数据库文件中有一个表(tperson),有一个字段(name)

 CString strSql;
 CString strName;
 CString strDriver = "MICROSOFT ACCESS DRIVER (*.mdb)";
 CString strDsn;
 CString strFile = "E:\\CurrentWork\\AccessTest\\data.mdb";
 strDsn.Format("ODBC;DRIVER={%s};UID=sa;PWD=;DBQ=%s",strDriver,strFile);
 TRY
 {

   CDatabase m_db;//加上这个定义,本来这个是一个类中的成员,暂时就放在这。
   m_db.Open(NULL,false,false,strDsn);
  CString strConnect = m_db.GetConnect();
  CRecordset rs(&m_db);
  strSql = "select * from tperson";
  rs.Open(CRecordset::forwardOnly,strSql,CRecordset::readOnly);
  while(!rs.IsEOF())
  {
   rs.GetFieldValue("name",strName);//读取数据库内容的代码
   rs.MoveNext();
  }
  m_db.Close();
 }
 CATCH(CDBException,e)
 {
  AfxMessageBox("Database Error:" + e->m_strError);
 }
 END_CATCH;
其中最关键的地方也就是strDSN这个字符串的内容要正确。

posted on 2006-04-13 13:01 史传红 阅读(12757) 评论(9)  编辑 收藏 引用 所属分类: C/C++细节知识

Feedback

# re: VC中访问Access数据库的方法(不需要用户建立ODBC数据源) 2006-04-13 13:16 Stone Jiang
m_db 是什么呢?
用ADO也可以呀?
http://www.codetools.com/database 中有一个ado2的包装类
简单好用  回复  更多评论
  

# re: VC中访问Access数据库的方法(不需要用户建立ODBC数据源) 2006-04-13 15:10 史传红
@Stone Jiang
能把这篇文章贴出来吗?我打开连接发现是好多主题。谢谢。  回复  更多评论
  

# re: VC中访问Access数据库的方法(不需要用户建立ODBC数据源) 2006-04-13 17:21 Stone Jiang
http://www.codetools.com/database/caaadoclass1.asp

  回复  更多评论
  

# re: VC中访问Access数据库的方法(不需要用户建立ODBC数据源) 2006-05-24 14:25 hah
支持!  回复  更多评论
  

# re: VC中访问Access数据库的方法(不需要用户建立ODBC数据源) 2010-03-30 17:31 guest
谢谢,我遇到运行异常问题了,提示:SQLFetchScroll/SQLExtendedFetch 之前,没有列被绑定,按照你的方法,解决了。我想问一下,该怎么往里添加和修改数据?  回复  更多评论
  

# re: VC中访问Access数据库的方法(不需要用户建立ODBC数据源) 2010-07-22 14:51 sunnyshi
@guest
不好意思,我好久没有搞这方面了,完全忘记了:)  回复  更多评论
  

# re: VC中访问Access数据库的方法(不需要用户建立ODBC数据源) 2011-04-07 12:40 Scatnow
感谢分享,谢谢分享,谢谢  回复  更多评论
  

# re: VC中访问Access数据库的方法(不需要用户建立ODBC数据源) 2011-05-05 22:47 guest
试试看,先谢谢了!  回复  更多评论
  

# re: VC中访问Access数据库的方法(不需要用户建立ODBC数据源) 2012-03-25 12:19 f13986203901
void CMy24Dlg::OnButton1()
{
int index=0;
CString strSql;
CString strname;
CString strDriver="MICROSOFT ACCESS DRIVER(*.mdb)";
CString strDsn;
CString strFile="F:\\user.mdb";
TRY
{
strDsn.Format("ODBC;DRIVER={%S};UID=sa;PWD=;DBQ=%s",strDriver,strFile);
CDatabase m_db;
m_db.Open(NULL,FALSE,FALSE,strDsn);
CString strConnect=m_db.GetConnect();
CRecordset rs(&m_db);
strSql="select * from usertable";
rs.Open(CRecordset::forwardOnly,strSql,CRecordset::readOnly);
while(!rs.IsEOF())
{
rs.GetFieldValue("name",strname);
m_pList.SetItemText(index,1,strname);
index++;
rs.MoveNext();

}
rs.Close();
m_db.Close();
}
CATCH(CDBException,e)
{
AfxMessageBox("Database Error:" + e->m_strError);
}
END_CATCH;
}
我用您的方法写了上面那个,提示:未发现数据源名称和未指定默认驱动程序!!怎么回事?  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理