今天图老师小编给大家精心推荐个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);          //执行操作
    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/n/20160219/1625256.html
看过《vc对Access数据库访问方法》的人还看了以下文章 更多>>