vc对Access数据库访问方法

五星级土豆1

五星级土豆1

2016-02-19 21:06

今天图老师小编给大家精心推荐个vc对Access数据库访问方法教程,一起来看看过程究竟如何进行吧!喜欢还请点个赞哦~

在StdAfx.h文件中,#endif // _AFX_NO_AFXCMN_SUPPORT之前,加入:
#import "C:Program FilesCommon FilesSystemadomsado15.dll" no_namespace rename("EOF","adoEOF")
接着, 在My.cpp文件InitInstance方法中, AfxEnableControlContainer();之前,加入:
 if(!AfxOleInit())  //初始化
 { AfxMessageBox( " initialize false!" ); }
我定了一个类,方便使用:

// ADODB.h
class CADODB
...{
public:
    _ConnectionPtr m_pConnection;
    _RecordsetPtr m_pRecordset;
    _CommandPtr m_pCommand;
    BOOL bOpenDB;
    CString m_strSQL;

    CADODB();
    void ADOConnection();    //打开连接数据库
    void ADOClose();    //关闭断开数据库
    BOOL ADOUpdata(CString strCommand);     //更新操作,新建,删除,修改
    _RecordsetPtr ADOSelect(CString strCommand);     //返回查询结果集
};
extern CADODB ADOCtrl;
 

//ADODB.cpp

CADODB ADOCtrl;

CADODB::CADODB()
...{                   bOpenDB = FALSE;
}

void CADODB::ADOConnection()
...{    CHAR DBfilePath[MAX_PATH];
    CString m_strdir;
   
    m_pConnection.CreateInstance("ADODB.Connection");
    m_pRecordset.CreateInstance("ADODB.Recordset");
    m_pCommand.CreateInstance("ADODB.Command");

    GetCurrentDirectory(MAX_PATH,DBfilePath);
    m_strdir.Format("%sconfig.udl",DBfilePath);  这里使用.udl连接文件, 我是udl,mdb,exe都放在同一目录下
    strtemp.Format("File Name=%s",m_strdir);
    m_pConnection-ConnectionString = (_bstr_t)strtemp;   注意使用时,数据类型变换
    m_pConnection-Open("","","",NULL);
    m_pCommand-ActiveConnection = m_pConnection;
    bOpenDB = TRUE;   
}

void CADODB::ADOClose()
...{    if (bOpenDB)
    ...{
        m_pConnection-Close();
        m_pConnection.Release();
        m_pRecordset.Release();
        m_pCommand.Release();
    }
}

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

BOOL CADODB::ADOUpdata(CString strCommand)
...{
    if (!bOpenDB)
    ...{    return FALSE;    }

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

    m_pCommand-CommandText = (_bstr_t)strCommand;
    m_pCommand-Execute(NULL,NULL,adCmdText);          //执行操作

    return TRUE;
}

_RecordsetPtr CADODB::ADOSelect(CString strCommand)
...{
    if (!bOpenDB)
    ...{    return NULL;     }

    m_pCommand-CommandText = (_bstr_t)strCommand;
    return m_pCommand-Execute(NULL,NULL,adCmdText);
}
使用举例:

 ADOCtrl.m_strSQL.Format("SELECT * FROM MyTable");  //SQL语句
 ADOCtrl.ADOConnection();
 ADOCtrl.m_pRecordset = ADOCtrl.ADOSelect(ADOCtrl.m_strSQL);
 while( !ADOCtrl.m_pRecordset-adoEOF )
 ...{   //获取字段信息, 注意字符类型变换: CString - CHAR* - _bstr_t
  CString str = (CHAR*)(_bstr_t)ADOCtrl.m_pRecordset-GetCollect("NAME");
  ADOCtrl.m_pRecordset-MoveNext();
 }
 ADOCtrl.ADOClose();

 ADOCtrl.m_strSQL.Format("INSERT INTO MyTable(NAME,AGE) VALUES ('%s','%d')",myname,age);
 //SQL语句
 ADOCtrl.ADOConnection();
 ADOCtrl.ADOUpdata(ADOCtrl.m_strSQL);  //插入一条记录
 ADOCtrl.ADOClose();
PS:
// Get the max ID value;
ADOCtrl.m_strSQL.Format("SELECT MAX(ID) as mID FROM GeneralTable");
ADOCtrl.m_pRecordset = ADOCtrl.ADOSelect(ADOCtrl.m_strSQL);
_variant_t mmID = ADOCtrl.m_pRecordset-GetCollect("mID");
int newID = ++mmID.intVal;  //将_variant_t的数据类型变成整型

关于.udl的使用:

1."提供程序"-选择:Microsoft Jet 4.0 OLE DB Provider;

2."连接"-输入数据库名称(可直接写数据库名, 不要加地址);登录信息不动;

3."所有"-Data Source 的值为 数据库名全称

展开更多 50%)
分享

猜你喜欢

vc对Access数据库访问方法

编程语言 网络编程
vc对Access数据库访问方法

DAO访问ACCESS数据库

编程语言 网络编程
DAO访问ACCESS数据库

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

ACCESS数据库访问组件(四)

电脑网络
ACCESS数据库访问组件(四)

ACCESS数据库访问组件(三)

电脑网络
ACCESS数据库访问组件(三)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

VB通过DAO访问Access数据库

编程语言 网络编程
VB通过DAO访问Access数据库

使用MIDAS访问远程Access数据库

编程语言 网络编程
使用MIDAS访问远程Access数据库

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

VC在对话框中使工具栏和状态栏大小随着窗口大小改变

VC在对话框中使工具栏和状态栏大小随着窗口大小改变

如何用VC++控制多光驱

如何用VC++控制多光驱
下拉加载更多内容 ↓