vc对Access数据库访问方法

2016-02-19 21:06 64 1 收藏

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

【 tulaoshi.com - 编程语言 】

在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();
    }
}

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

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

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

    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 的值为 数据库名全称

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

来源:http://www.tulaoshi.com/n/20160219/1625256.html

延伸阅读
本文描述如何在VC下动态创建access数据库(mdb)文件,方法是用ADO和ADOX来操作数据库,操作环境为winxp/VC6.0/ACCESS2000。具体方法如下。       使用ADO前必须在工程的stdafx.h文件最后用直接引入符号#import引入ADO库文件,以使编译器能正确编译。代码如下: #import "C:Program Filescommon filessystemadomsado15....
ado技术目前已经成为连接数据库的主流技术,下面我来介绍如何使用ado来动态创建access数据库。为了使用ado,必须引入微软的两个动态连接库msadox.dll和msado15.dll:     #pragma warning (disable: 4146)     #import "c:Program FilesCommon Filessystemadomsadox.dll"     #import "c:Progr...
介绍 VC用ADO访问数据库全攻略,介绍了VC用ADO来访问数据库的各个对象及各方法,很经典,也很实用,很值得一看。   正文 一、ADO概述 ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口。ADO 使您能够编写应用程序以通过 OLE. DB 提供者访问和操作数据库服务器中的数据。ADO 最主要的...
一、密码式 给数据库起一个随机复杂的名称,避免被猜到被下载,这种方式在以前很流行,因为大家都对自己的代码很有自信。但随着错误提示对数据库地址的泄露导致数据库被非法下载,这种方式也就越来越少人用了。 二、"#"式 在数据库名称里加上#号,从URL上请求时#是请求地址和请求参数的一个分隔字符,如果知道了数据库名...
问:我们单位财务以前用的Access是97版,前不久将Access 97升级至2000版本了。升级完成后出现问题,打开原有的文件后系统提示:“Access 2000无法识别旧版本的数据库文件”,请问有没有办法可以修复数据库? 答:你可以利用软件AccessFix(下载地址为http://www.onlinedown.net/soft/16220.htm)来修复数据库。安装完成后点击按钮“Add ...

经验教程

809

收藏

62
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部