VS中MFC连接SQL SERVER
2016-06-01 16:02
453 查看
1.新建数据库 VCTest;
2.控制面板,管理工具,数据源ODBC,系统DSN,添加,VCTest,服务器DELL-PC,使用用户登录,wei,123456,更改默认数据库为VCTest,测试数据源,确定。
3.在stdafx.h头文件中添加下面代码,路径根据实际情况即可
4.单例模式
5.操作
2.控制面板,管理工具,数据源ODBC,系统DSN,添加,VCTest,服务器DELL-PC,使用用户登录,wei,123456,更改默认数据库为VCTest,测试数据源,确定。
3.在stdafx.h头文件中添加下面代码,路径根据实际情况即可
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
4.单例模式
#pragma once class CMyDB { public: CMyDB(void); ~CMyDB(void); public: int DBConnect(); _ConnectionPtr m_pConnection; _RecordsetPtr m_pRst; static CMyDB *getInstance(); _ConnectionPtr getDBConnect(); private: static CMyDB *myDBInstance; };
#include "stdafx.h" #include "MyDB.h" CMyDB::CMyDB(void) { m_pConnection=NULL; } CMyDB::~CMyDB(void) { } CMyDB *CMyDB::myDBInstance=NULL; CMyDB *CMyDB::getInstance() { if (myDBInstance==NULL) { myDBInstance=new CMyDB(); } return myDBInstance; } _ConnectionPtr CMyDB::getDBConnect() { if (m_pConnection==NULL) { DBConnect(); } return m_pConnection; } int CMyDB::DBConnect() { ::CoInitialize(NULL);//初始化数据库连接 HRESULT hr=NULL; try{ hr=m_pConnection.CreateInstance(_uuidof(Connection)); if (SUCCEEDED(hr)) { m_pConnection->ConnectionString=("Provider=SQLOLEDB.1;Persist Security Info=False;User ID=wei;Password=453276;Initial Catalog =VCTest; Data Source = DELL-PC"); m_pConnection->Open("","","",adConnectUnspecified); if (FAILED(hr)) { AfxMessageBox(_T("数据库连接失败")); return 0; }else{ return 1; } }else{ return 0; } }catch(_com_error e){ CString error_message; error_message.Format(TEXT("连接数据库失败 !\r\n 错误信息:%s(%ld)"),e.ErrorMessage(),e.Error()); AfxMessageBox(error_message); return 0; } }
5.操作
#pragma once #include "MyDB.h" #include "MyMSG.h" class CMessageDao { public: CMessageDao(void); ~CMessageDao(void); CList<MyMSG> *getMSG(); int deleteMSG(CString s_time); int insertMSG(CString s_time,CString s_message); private: _ConnectionPtr conn; _RecordsetPtr rst; CMyDB *myDB; };
#include "stdafx.h" #include "MessageDao.h" CMessageDao::CMessageDao(void) { //连接数据库 myDB=CMyDB::getInstance(); conn=myDB->getDBConnect(); rst=myDB->m_pRst; } CList<MyMSG> *CMessageDao::getMSG() { CString sql; sql.Format(_T("select * from t_message")); CString s_time,s_message; rst=conn->Execute(_bstr_t(sql),NULL,adCmdText); CList<MyMSG> *msg_list=new CList<MyMSG>(); while (!rst->adoEOF) { s_time=(TCHAR *)(_bstr_t)rst->GetFields()->GetItem("time")->Value; s_message=(TCHAR *)(_bstr_t)rst->GetFields()->GetItem("message")->Value; MyMSG myMsg; myMsg.s_time=s_time.Trim(); myMsg.s_message=s_message.Trim(); msg_list->AddTail(myMsg); rst->MoveNext(); } return msg_list; } int CMessageDao::deleteMSG(CString s_time) { CString sql; sql.Format(_T("delete from t_message where time='%s'"),s_time); conn->Execute(_bstr_t(sql),NULL,adCmdText); return 1; } int CMessageDao::insertMSG(CString s_time,CString s_message) { CString sql; sql.Format(_T("insert into t_message(time,message) values('%s','%s')"),s_time,s_message); conn->Execute(_bstr_t(sql),NULL,adCmdText); return 1; } CMessageDao::~CMessageDao(void) { }
相关文章推荐
- 安卓开发前后台通信,从数据库中取数据并在前台以表格形式显示,以json格式传输
- mysql, PostgreSQL,Oracle对比——sql,驱动和数据库URL
- C# Access数据库增删查改的简单方法
- oracle笔记——索引
- 大话架构师之分布式存储--mysql
- 存档mysql配置文件
- 不直接访问远程的数据库,而是通过中间件(专业DBA的博客)
- oracle系统包—-dbms_output用法
- SQLServer 将日期改造成标准日期格式(如: 2016/6 ->201606)
- oracle中if/else功能的实现的3种写法
- Oracle CASE WHEN 用法介绍
- MongoDB执行计划学习整理
- JDBC连接MySQL
- oracle 游标使用根据工龄更新年假
- 关系表与非关系表的区别
- oracle的基本操作
- oracle 使用case when查询列
- mysql 报错ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing
- 关于MYSQL替换和存储过程的问题、
- c#.net连接mongodb入门(一)