vs2008 MFC访问Access 2010数据库

本文介绍了如何在VS2008的MFC应用中使用ODBC接口连接并操作Access 2010数据库。通过CDatabase、CRecordset和CDBException类,演示了打开数据库、关闭数据库、插入记录和查询记录的步骤。示例代码详细展示了如何执行SQL语句和处理异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    MSDN给出了各种语言访问Access 2010的详细介绍:点击打开链接。下图列出了各种语言访问Access 2010的接口。


我在VS2008下使用MFC下的ODBC相关接口访问Access 2010数据库。

Demo中使用MFC访问数据库accsess2010数据库AccessDemo.accdb下有student表,表中有用户编号、电话号码、姓名、省份四列信息,表中有包含这四列信息的多个记录。
MFC下使用CDatabase、CRecordset、CDBException三个类来访问数据库。其中CDatabase主要用来打开和关闭数据库以及执行SQL指令;CRecordset用来执行查询、删除、添加记录;CDBException用来处理异常信息。
1.使用CDatabase、CRecordset、CDBException需要包含头文件:
#include "afxwin.h"
2.打开数据库
CDatabase db;
BOOL result = TRUE;
LPCTSTR lpszConnect = 
    _T("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DSN='';DBQ=C:\\AccessDemo.accdb;PWD=asdfg;");
    TRY
    {
        result = db.OpenEx(lpszConnect, CDatabase::openExclusive|CDatabase::noOdbcDialog);
    }
    catch(CDBException * e){
MessageBox(e->m_strError);
    }
3.关闭数据库
    TRY
    {
        db.Close();
    }
    catch(CDBException * e){
MessageBox(e->m_strError);
    }
4.插入一个新的记录,这里使用CDatabase.ExecuteSQL()来执行SQL语句插入记录到表中。
    UpdateData(TRUE);
    CString insert,temp;
    insert=_T("insert into student(用户编号,电话号码,姓名,省份) values(");
    temp.Format(_T("%d"),m_idlint);
    insert+=temp+_T(",\'")+m_phonenumstr+_T("\',\'")+m_namestr+_T("\',\'")+m_provincestr+_T("\')");
    try{
    db.ExecuteSQL(insert);
    }
    catch(CDBException *e){
    MessageBox(e->m_strError);
    }
5.使用CRecordset查询记录符合条件的记录。
UpdateData(TRUE);
BOOL result = TRUE;
CDBVariant var;
CString value;
CString query =_T("SELECT student.[用户编号], student.[电话号码],student.[姓名], student.[省份] FROM student where student.[电话号码]='");
query+=m_phonenumstr+_T("'");
MessageBox(query);
CRecordset rs(&db); 
try{
result = rs.Open(CRecordset::dynaset, query, CRecordset::none);
if(TRUE==result){
CODBCFieldInfo fInfo; 
short sFieldCount = rs.GetODBCFieldCount();
int rowCount = 0;
while (!rs.IsEOF())
{
for (short column = 0; column < sFieldCount; column++)
{
rs.GetFieldValue(column, var);
switch (var.m_dwType)
{
case DBVT_STRING:
value.Format(_T("%s"), var.m_pstring->GetBuffer(var.m_pstring->GetLength()));
break;
case DBVT_ASTRING:
value.Format(_T("%s"), var.m_pstringA->GetBuffer(var.m_pstringA->GetLength()));
break;
case DBVT_WSTRING:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值