前段时间项目中用的是mysql数据库,它的连接方法有二种,一种是数据库自带的API,还有一种就用ADO连接了。

由于本次项目用的mysql数据库只是暂时的,后期可能会更改为MSSQL,所以如果用mysql自带的API连接移植性不好,所以改为ADO的,到时只要修改下字符串连接值就行了。

其实ADO连接的底层也是调用的ODBC驱动去连接,所以需要去下载个数据库对应的ODBC驱动,别人说秘本需要对应,要不然连接不上,我没有做太多测试,自己用的6.0版本,所以去官网下载了个mysql-connector-odbc-5.3.4-winx64版本的,然后对应的字符串为:driver={MySQL ODBC 5.3 ANSI Driver};Server=localhost;DATABASE=*;USER=*;PASSWORD=*;OPTION=3;

实测是可以连接成功的。

下面放出自己写的一个超级简单的类:#pragma once

#import  no_namespace rename("EOF", "adoEOF")

// #import "msado15.DLL"   rename_namespace("ADOWE") rename("EOF","adoEOF")

// using namespace ADOWE;

class CAdoDatabase

{

public:

CAdoDatabase(void);

public:

~CAdoDatabase(void);

public:

//BOOL Connect(CString csConnectStr,CString csUser,CString csPasswd);

//连接

BOOL Connect(CString csConnectStr);

//断开连接

BOOL DisConn();

//执行语句

BOOL Execute(CString csSQL);

//是否连接

BOOL IsConn();

//返回结果的行数

int  QueryDataForRecord(CString csSql,CStringArray& csa);

private:

_ConnectionPtr m_pConn;

_RecordsetPtr  m_pRecord;

};

实现:BOOL CAdoDatabase::Connect(CString csConnectStr)

{

HRESULT hr;

try

{

hr = m_pConn.CreateInstance(__uuidof(Connection));

//hr = m_pConn.CreateInstance("ADODB.Connection");

//m_pConn->Open(_bstr_t(csConnectStr),"","",ADODB::adConnectUnspecified);

m_pConn->Open(_bstr_t(csConnectStr),"","",adModeUnknown);

return TRUE;

}

catch (_com_error e)

{

CString csErrorMsg;

csErrorMsg.Format(_T("连接数据库出错:%s"),e.ErrorMessage());

AfxMessageBox(csErrorMsg,MB_OK+MB_ICONERROR);

return FALSE;

}

}

BOOL CAdoDatabase::DisConn()

{

if (m_pConn->State)

{

m_pConn->Close();

m_pConn = NULL;

return TRUE;

}

return FALSE;

}

BOOL CAdoDatabase::Execute(CString csSQL)

{

try

{

_variant_t RecordsAffected;

m_pConn->Execute((_bstr_t)csSQL,&RecordsAffected,adCmdText);

return TRUE;

}catch(_com_error e)

{

CString csMsg;

csMsg.Format(_T("执行SQL语句出错:%s"),e.ErrorMessage());

AfxMessageBox(csMsg,MB_OK+MB_ICONERROR);

return FALSE;

}

}

int CAdoDatabase::QueryDataForRecord(CString csSql, CStringArray &csa)

{

try

{

m_pRecord.CreateInstance(__uuidof(Recordset));

//m_pRecord->Open((_bstr_t)csSql,m_pConn.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);

m_pRecord->Open((_bstr_t)csSql,_variant_t((IDispatch *)m_pConn, true),adOpenKeyset,adLockReadOnly,adCmdText);

int nCount;

int nRowCount = 0;

nCount = m_pRecord->Fields->GetCount();

_variant_t vt;

while (!m_pRecord->adoEOF)

{

for (int i=0; i

{

vt =m_pRecord->Fields->GetItem(long(i))->GetValue();

if (vt.vt == VT_NULL)

{

vt = _T("");

}

csa.Add(vt);

}

nRowCount++;

m_pRecord->MoveNext();

}

m_pRecord->Close();

return nRowCount;

}catch(_com_error e)

{

CString csMsg;

csMsg.Format(_T("查询语句出错:%s"),e.ErrorMessage());

AfxMessageBox(csMsg,MB_OK+MB_ICONERROR);

return -1;

}

}

此代码运行平台为WIN7,我把它放到XP上运行时,提示无效指针,网上查了下是平台兼容性的问题,换到其它WIN7电脑上可成功运行。所以也没管它了,有解决的小伙伴,可以提供下方法,谢谢!

vc mysql 连接_vc连接mysql数据库的方法相关推荐

  1. php+pg+query+更新,PHP连接及操作PostgreSQL数据库的方法详解

    本文实例讲述了PHP连接及操作PostgreSQL数据库的方法.分享给大家供大家参考,具体如下: PostgreSQL扩展在默认情况下在最新版本的PHP 5.3.x中是启用的. 可以在编译时使用--w ...

  2. python连接sqlite加密_C#连接加密的Sqlite数据库的方法

    对数据加密分两种,一种是对数据库本身进行加密,另一种是对数据表中的数据进行加密, 如果SQLite数据库加密,我这里使用的一个管理工具叫SQLiteDeveloper,如下就可以加密数据库 , 如果在 ...

  3. mysql特殊字段名称_Mysql必读MySQL创建带特殊字符的数据库名称方法示例

    <MysqL必读MysqL创建带特殊字符的数据库名称方法示例>要点: 本文介绍了MysqL必读MysqL创建带特殊字符的数据库名称方法示例,希望对您有用.如果有疑问,可以联系我们. 文章抓 ...

  4. mysql 数据库名称 特殊字符_Mysql必读MySQL创建带特殊字符的数据库名称方法示例...

    <Mysql必读MySQL创建带特殊字符的数据库名称方法示例>要点: 本文介绍了Mysql必读MySQL创建带特殊字符的数据库名称方法示例,希望对您有用.如果有疑问,可以联系我们. MYS ...

  5. vc mysql 图片_VC连接MySQL

    一.MySQL的安装 可以考虑安装mysql-5.0.41-win32(可到http://www.newhua.com/soft/3573.htm处下载),当然你有更新的版本更好,注意选择" ...

  6. medoo连接mysql_Medoo初始化及数据库配置方法

    关于数据库的配置方法,官方给的是独立配置,就是在每个调用页面都写一个配置文件,这样太麻烦了,类似这样的 require 'medoo.php'; $database = new medoo([ 'da ...

  7. 热血江湖数据库MYSQL修改_热血江湖SQL数据库架设方法

    SQL数据库架设方法 第一步:首先是下载SQLSERVER啦. 第二步:安装程序选择SQL2000组件就是第一个--安装数据库服务器还是第一个一直下一步本地计算机一直默认下一步到选择本地系统用户--到 ...

  8. mysql56数据库的创建_如何在Mysql下用命令创建数据库用户方法

    增加新用户:(注意:下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符) 格式:grant select on 数据库.* to 用户名@登录主机 identified by &q ...

  9. word数据源mysql,Word2013中使用Access数据库的方法

    Word 2013允许将Access数据库中的表和查询添加到Word文档中,下面介绍Word2013中使用Access数据库的具体操作方法. 1.启动Word 2013,打开需要添加Access数据库 ...

  10. php如何连接postgresql,php如何连接和操作PostgreSQL数据库

    这篇文章主要介绍了php连接与操作PostgreSQL数据库的方法,以实例形式较为详细的分析了php连接PostgreSQL数据库以及进行读取与增加.修改.删除等技巧,具有一定的参考借鉴价值,需要的朋 ...

最新文章

  1. 微信开发-ACCESS TOKEN 过期失效解决方案
  2. 计算机网络本地连接被禁用说明什么,win10系统网络被禁用重新启用本地连接的设置技巧...
  3. ssl双向认证和单向认证的区别
  4. OSI七层模型中每层的协议及网络设备—Vecloud微云
  5. 【UEditor】介绍
  6. 最小覆盖圆的增量算法
  7. vue怎么自己创建组件并引用_Vue 实现创建全局组件,并且使用Vue.use() 载入方式
  8. git 回退到某个commit_it lesson2 版本回退
  9. centos mysql pid_centos7 mysql The server quit without updating PID file(错误解决)
  10. 【云栖号案例 | 教育与科研机构】红岭创投上云 成功顺应全球电子商务发展趋势
  11. mysql 对部分表binlog_MySQL抑制binlog日志中的binlog部分
  12. 页面jquery调试的一个宝贵经验(类似于Eclipse中的写出一个对象点它的方法时候用alt加/可以跳出来它所有的方法)...
  13. Python 标准库 —— socket(网络编程)
  14. Fdfs_client类报错
  15. 黑龙江高中计算机结业水平测试,黑龙江省普通高中信息技术学业水平考试标准.doc...
  16. ESXI安装网卡或HBA卡驱动
  17. 4位先行进位加法器_第4章 C语言基础以及流水灯的实现
  18. Linux增加一块scsi硬盘,Linux下添加第二块scsi硬盘
  19. 阿里云、腾讯云、百度云、京东云、华为云、他们之间的不同之处?
  20. netty 远程主机强迫关闭了一个现有的连接。

热门文章

  1. apache配置本地的虚拟主机
  2. 博图中fb与多重背景数据块_STEP7中如何生成和更新多重背景?
  3. BNU29140 Taikotaiko(概率)
  4. java技术分享ppt_精美PPT制作培训 | 技术二部内部分享
  5. Qt:利用telnet连接PMAC
  6. 自动驾驶 9-4: 改进的 EKF - 错误状态扩展卡尔曼滤波器 An Improved EKF - The Error State Extended Kalman Filter
  7. java interface 传值_前后端分离传值方案-RestfulAPI
  8. lsd 特征点匹配代码_openCV-特征点匹配算法介绍一:理解特征
  9. tableau示例超市数据在哪儿_Tableau | 超市销售数据可视化分析
  10. k-means 及其改进 数库