背景
接触C++以来,因为之前学的java做Web时经常要和数据库打交道,所以也就一直想用C++来操作数据库。之前也听过ODBC数据源的方法听说比较麻烦,C++用ADO的方法连接数据比较方便。
下面就是具体的步骤和代码了。
1.导入ADO的库
使用ADO的话必须要导入它的库,这语句放到头文件.h中,因为我这里是用的MFC程序建的工程,所以我放在stdafx.h头文件中
//导入ADO的库
#import "C:\\Program Files\\Common Files\\System\\ado\\msado15.dll" no_namespace rename("EOF","adoEOF")
文件msado15.dll可以在你的电脑中的相应路径C:\Program Files\Common Files\System\ado找到;no_namespace 表示没有命名空间,可以不写不过后面的ADO对象要加上ADODB::引入;rename("EOF","adoEOF")是用adoEOF替换EOF ,如果你用到BOF的话也可以通过这种方式替换。
2.在头文件中定义成员变量和成员函数
在AdoDlg.h文件中:
//定义变量
_ConnectionPtr m_conn; //连接智能指针
_RecordsetPtr m_rec;//记录集智能指针
HRESULT hr;
// //列表控件变量
CListCtrl m_listCtrl;
//函数
bool AdoOpen(char* userName,char* pwd,char* conStr,char* errStr); //连接数据库
//_RecordsetPtr AdoExucute(char* sqlStr); //执行sql语句,操作表
bool AdoClose();//关闭数据库
void InsertCol();//插入表头
void GetRecordSet();//获得记录集
void AdoQuery();//查询数据
bool AdoAdd();//增加数据
bool AdoUpdate();//修改数据
bool AdoDelete();//删除数据
3.在使用ADO前要初始化COM类库环境
在AdoDlg.cpp文件中:
a.在构造函数中初始化成员变量
m_conn=NULL;
b.在OnInitDialog()函数中
//初始化COM类库
//CoInitialize返回的是HRESULT类型的值,返回S_OK(值为0)表示COM初始化成功,
// 返回S_FALSE(值为1)表示当前线程已经初始化过COM,所以返回S_OK或S_FALSE都是对的
/*if(FAILED(::CoInitialize(NULL)))
{
MessageBox("初始化COM库失败");
return FALSE;
}*/
AfxOleInit();//MFC工程建议用AfxOleInit();
//控制台建议用CoInitalize(),同时在Close函数或是析构函数中记得调用::CoUninitialize();卸载COM环境;
//MFC工程建议用AfxOleInit();就行了。
4.实现成员函数
a .建立与数据库的连接
//连接数据库
bool CAdoDBDlg:: AdoOpen(char* userName,char* pwd,char* conStr,char* errS