MFC学习(一)——ADO数据库编程
来源:互联网 发布:阿里妈妈淘宝联盟客服 编辑:程序博客网 时间:2024/06/05 20:48
这几篇是是在MFC框架下做保险项目的学习心得,只学了两周,但是还是学了很多知识。
下面介绍一下用ADO来进行数据库的各种操作。
1、数据库连接和打开
这次项目用的是SQL Server数据库,ADO连接数据遇到最重要的问题就是找到连接字符串,经过亲身经历各种尝试,在网上发现了一种无bug的方法,就是通过新建ado.udl文件,然后打开填写相应的数据库后用记事本打开即可得到连接字符串。下面是我封装的一个打开数据库的方法:
BOOL CDateOperator::OpenDateBase(){ if(NULL == m_pConnection){ AfxMessageBox(L"Create Instance failed!"); return FALSE; } if(m_pConnection){ try { const _bstr_t strSRC= "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=mydb;Data Source=LI5CH\\SQLEXPRESS"; HRESULT hr = m_pConnection->Open(strSRC,L"",L"",-1); } catch(_com_error &e) { CString errormsg; errormsg.Format(L"关闭连接——操作错误!\r\n错误信息:%s",e.ErrorMessage()); AfxMessageBox(errormsg); } } return TRUE; }
2、ADO如何执行sql语句
BOOL CDateOperator::ExcuteSQL(CString strSQL){ if(NULL == m_pConnection) return FALSE; try { HRESULT hr = m_pConnection->Execute(_bstr_t(strSQL),NULL,-1); } catch(_com_error &e) { return FALSE; } return TRUE;}
3、ADO如何插入记录
BOOL CDateOperator::Insert_db(DEMO objuser){ if(NULL == m_pConnection) return FALSE; _RecordsetPtr m_pRecordset; HRESULT hr = m_pRecordset.CreateInstance(L"ADODB.Recordset"); if(FAILED(hr)) return FALSE; CString strSQL = L"SELECT User_ID, User_Name FROM fate"; hr = m_pRecordset->Open(_bstr_t(strSQL),m_pConnection.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText); if(FAILED(hr)){ m_pRecordset.Release(); return FALSE; } try { m_pRecordset->AddNew(); } catch(_com_error &e) { m_pRecordset->Close(); m_pRecordset.Release(); return FALSE; }// byte byData[10000]; try { m_pRecordset->PutCollect("User_ID",_variant_t(objuser.User_ID)); m_pRecordset->PutCollect("User_Name",_variant_t(objuser.User_Name)); } catch(_com_error &e) { m_pRecordset->Close(); m_pRecordset.Release(); return FALSE; } m_pRecordset->Update(); m_pRecordset->Close(); m_pRecordset.Release(); return TRUE; }
4、ADO如何查询数据
BOOL CDateOperator::Select_db(vector<DEMO>& vecObjUser){ if(NULL == m_pConnection) return FALSE; _RecordsetPtr m_pRecordset; HRESULT hr = m_pRecordset.CreateInstance(L"ADODB.Recordset"); if(FAILED(hr)) return FALSE; vecObjUser.clear(); CString strSQL = L"SELECT User_ID, User_Name FROM fate"; hr = m_pRecordset->Open(_bstr_t(strSQL),m_pConnection.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText); if(FAILED(hr)){ m_pRecordset.Release(); return FALSE; } VARIANT_BOOL bRet = m_pRecordset->GetadoEOF(); while(!bRet){ _variant_t varUserID = m_pRecordset->GetCollect(L"User_ID"); _variant_t varUserName = m_pRecordset->GetCollect(L"User_Name"); DEMO objUser; objUser.User_ID=varUserID.intVal; _tcscpy(objUser.User_Name,(TCHAR*)(_bstr_t)varUserName); vecObjUser.push_back(objUser); m_pRecordset->MoveNext(); bRet = m_pRecordset->GetadoEOF(); } m_pRecordset->Close(); m_pRecordset.Release(); return TRUE; }
5、ADO如何更新数据
BOOL CDateOperator::update_db(DEMO objuser){ if(NULL == m_pConnection) return FALSE; _RecordsetPtr m_pRecordset; HRESULT hr = m_pRecordset.CreateInstance(L"ADODB.Recordset"); if(FAILED(hr)) return FALSE; CString strSQL; strSQL.Format(L"SELECT User_ID, User_Name FROM fate WHERE User_ID=%d", objuser.User_ID); hr = m_pRecordset->Open(_bstr_t(strSQL),m_pConnection.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText); if(FAILED(hr)){ m_pRecordset.Release(); return FALSE; }// byte byData[10000]; try { m_pRecordset->PutCollect("User_Name",_variant_t(objuser.User_Name)); } catch(_com_error &e) { m_pRecordset->Close(); m_pRecordset.Release(); return FALSE; } m_pRecordset->Update(); m_pRecordset->Close(); m_pRecordset.Release(); return TRUE; }
6、下面贴一下构造和析构函数
CDateOperator::CDateOperator(void){ try { HRESULT hr = m_pConnection.CreateInstance("ADODB.Connection"); if(FAILED(hr)) { AfxMessageBox(L"Create Instance failed!"); m_pConnection = NULL; } } catch(_com_error &e) { }}CDateOperator::~CDateOperator(void){ if(m_pConnection) { try { HRESULT hr = m_pConnection->Close(); } catch(_com_error &e) { } } m_pConnection.Release(); m_pConnection = NULL;}
0 0
- MFC学习(一)——ADO数据库编程
- ADO C++ 数据库编程学习(一)
- MFC+Access数据库(ADO数据库编程)
- MFC ADO 数据库编程
- ADO + MFC 数据库编程
- ado数据库编程(一)
- [MFC]ADO 数据库编程参考
- MFC中的ADO数据库编程
- MFC中使用ADO访问数据库(心得一)
- ADO数据库编程总结(一)
- 【转】.net数据库编程学习一:ADO.NET 结构
- MFC之ADO数据库快速编程
- ADO+MFC数据库编程常用语句
- ADO+MFC数据库编程常用SQL语句
- MFC之ADO数据库快速编程
- MFC ADO数据库编程 : A set of ADO classes
- MFC开发心得——ADO连接和操作数据库
- 【MFC】数据库——ODBC和ADO的区别
- 手写的qsort快速排序
- 广东省赛B题 Base64
- 第三章第40题 Sn=1+1/1!+1/2!+···+1/n!
- 七大排序算法的研究与总结
- Python使用QRCode模块生成二维码
- MFC学习(一)——ADO数据库编程
- 怎样去曹妃甸最深处的海边?(曹妃甸灯塔,十八家)
- 文章标题
- RabbitMQ(二)队列与消息的持久化
- Android Studio如何Format代码
- hibernate连接oracle 12c pdb
- linux 常见问题
- QL语句通常不是很容易理解,特别是你阅读别人已经写好的语句。因此,很多人指出我们应该遵循在其他语言中遵循的原则,像加上注释和功能模块化。我最新注意到一个很多人都没有使用的Postgres关键特性,也就
- 使用CSS3实现超炫的Loading(加载)动画效果