之前为了做课程设计花了很长一段时间尝试mfc连接数据库,用了很多方法,后来终于成功了,所以将方法记下便于以后使用.
另外我用的是ADO连接
一.创建数据库
我使用的是SQL server2000,这里就不多讲述数据库的创建.
二.让软件知道是哪个数据库
控制面板->管理工具->数据源->添加......
三.获取连接字符串
新建一个空的文本,后缀改为udl,打开,选择自己的数据库.
设置成功,测试连接成功后关闭,右键记事本打开,下面一段就是连接字符串,到时候直接复制粘贴就行.
以上是初期的数据库准备工作,现在打开VC6创建一个新工程
一.在StdAfx.h中加入#import "c:\program files\common files\system\ado\msado15.dll" no_namespace,rename("EOF","adoEOF")
二.
_CommandPtr cmd;
_RecordsetPtr rst;
_ConnectionPtr con;
我主要用了后两个,第二个是记录集,第三个是连接用
三
con->Open("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Mygame;Data Source=(local)","","",adModeUnknown);
//"Provider......"里就是连接字符串,现在就粘贴上面复制的连接字符串就好
rst->Open(_variant_t("select * from Mpeople"),_variant_t((IDispatch*) con),adOpenDynamic,adLockOptimistic,-1);
//_variant_t("select * from Mpeople")这里存放的是sql语句,执行成功后rst里就存放了读取的数据,但是这种方法不支持动态使用,动态使用将在下面介绍
四.
zhanghao=((_bstr_t)(rst->GetCollect("Gzhanghao"))))
//这句话的意思是将保存了的rst里的数据中的Gzhanghao列转换后传给zhanghao(CString)
五.
rst->PutCollect("Gdengji",_bstr_t(show_dengji));
//这是将数据保存到数据库
六.
CString sql;
sql.Format(_T("select * from Mpeople where Gzhanghao like '%%%s%%'"),xunzhao_zhanghao);
rst->Open((_bstr_t)(sql),_variant_t((IDispatch*) con),adOpenDynamic,adLockOptimistic,-1);
//这句话的功能是将编辑框里输入的字符串导入到sql语句中,再在数据库中寻找
//里面用到了模糊查询 '%%%s%%'
七
操作数据库非常容易出错,程序编译成功,但是运行时会出错这种问题非常容易遇到,所以我们需要用到捕捉错误的功能,一下是一个范例
try
{
rst->Open((_bstr_t)(sql),_variant_t((IDispatch*) con),adOpenDynamic,adLockOptimistic,-1);
}
catch (_com_error e)
{
AfxMessageBox(e.Description());
}
第一次自己写博文,写的比较乱