Windows下使用VS的ADO访问MySQL

数据库的访问的一种方式就是:CS结构。即使用TCP/UDP协议进行远程访问,而数据库对于服务端的软件是本地访问!这种管理方式比较常见。

这里主要叙述Windows访问本地数据库的方法。

需要了解几个概念:

1、ADO是什么。ADO (ActiveX Data Objects,ActiveX数据对象)是Microsoft提出的应用程序接口(API)用以实现访问关系或非关系数据库中的数据。ADO也是Microsoft的组件对象模式(COM)的一部分其实你可以理解成微软程序访问数据库的一种统一的接口,目的是简化数据库的访问(如果不使用ADO,就只能使用各种数据库自己提供的API函数)。

2、脱离平台的数据库包含哪些部分。SQL Server和数据源。至于SQL Server下载参见:https://dev.mysql.com/downloads/installer/。注意这两个版本都是等价的,听说那个容量小的是一个下载器(我下载的是那个容量大的)。SQL Server就相当于数据资源的底层管理者。

3、数据库驱动器(数据库连接器)。它是基于平台的。基于Windows平台的驱动器下载参见:https://dev.mysql.com/downloads/connector/odbc/。总共是4个,眼花了吧!建议下载MSI Installer。这是整个安装包,一键安装,你懂得!64位,32位都要下载!因为下面需要配置ODBC的(都下载了,肯定有一个能用,我的只能用32位的)。

至此需要的软件均已下载完成。

配置:

1、数据库驱动器直接双击安装即可。MySQL安装(包括数据库服务器)比较麻烦一点。都安装上肯定不会出错(我也是初学者)。主要安装MySQL server和MySQL shell、MySQL workbench。整个安装过程中需要配置主机/服务器名、端口、用户名、密码、数据库名。

主机/服务器名写ip地址或者localhost(本地)。端口默认即可,用户名,自己命名,但要记着!密码随便。数据库名随便写一个,因为在shell中你可以对数据库进行删除等操作。(MySQL已安装过了,不想再安装一遍了)。

2、设置odbc数据源(64,32位)均要设置一遍。建议创建系统DSN(所有用户均可访问,文件DSN可以在电脑上进行复制粘贴,如果编给其他电脑的可以选择文件DSN)。

点击右侧添加,

 

 

 

这两种编码自己查(即使查了也不一定能明白),我选的是第二项。

记住自己设置的DSN(Data Source Name)。其他选项一看就懂。至此DSN创建完成。

细心的也可能注意到了:MySQL for Visual Studio:https://dev.mysql.com/ downloads/windows/visualstudio/。听说那是给ADO.NET开发的,不懂.NET的就不要瞎搞了。我也不懂。

至此接口完成!

下面就能进行测试了,测试代码如下:

  1 #include <Windows.h>
  2 
  3 #include <iostream>
  4 
  5 #include <string>
  6 
  7 using namespace std;
  8 
  9 #import "C:/Program Files/Common Files/System/ado/msado15.dll" no_namespace rename("EOF","adoEOF")rename("BOF","adoBOF")
 10 
 11  
 12 
 13 int main(int argc,char *argv[])
 14 
 15 {
 16 
 17 CoInitialize(NULL);
 18 
 19  
 20 
 21 //Connect  
 22 
 23 _ConnectionPtr pConn;
 24 
 25 pConn.CreateInstance(__uuidof(Connection));
 26 
 27 try
 28 
 29 {
 30 
 31 HRESULT hr = pConn->Open("DSN=dsn;server=localhost;database=mydb;","user","password",adModeUnknown);
 32 
 33 }
 34 
 35 catch (_com_error&e)
 36 
 37 {
 38 cout<< e.Description()<< endl;
 39 return -1;
 40 }
 41 
 42 //Open  
 43 
 44 _RecordsetPtr pRecord;
 45 
 46 pRecord.CreateInstance(__uuidof(Recordset));
 47 
 48 pRecord->CursorLocation = adUseClient;
 49 
 50 pRecord->PutActiveConnection(pConn.GetInterfacePtr());
 51 
 52 
 53 //Read  
 54 
 55 try {
 56 
 57 pRecord->Open(_bstr_t("select * from mytable"), vtMissing,adOpenDynamic,adLockBatchOptimistic,adCmdText);
 58 
 59 }
 60 
 61 catch (_com_error &e) {
 62 
 63 cout<< e.Description()<<endl;
 64 
 65 //Table 'mydb.mytable' doesn't exist
 66 
 67 }
 68 
 69 while (!pRecord->adoEOF)
 70 
 71 {
 72 
 73 _variant_t vID = pRecord->GetCollect(_variant_t((long)0));
 74 
 75 _variant_t vName = pRecord->GetCollect("name");
 76 
 77 _variant_t vSex = pRecord->GetCollect("sex");
 78 
 79  
 80 cout<< (char*)(_bstr_t)vName<< " ";
 81 
 82 cout<< (char*)(_bstr_t)vSex<< " "<<endl;
 83 
 84  
 85 pRecord->MoveNext();
 86 
 87 }
 88 
 89 
 90 //Close  
 91 
 92 pRecord->Close();
 93 
 94 pConn->Close();
 95 
 96  
 97 CoUninitialize();
 98 
 99 return 0;
100 
101 };

 

主要是配置pConn->Open()的参数,你的参数不一定跟我一样。如果直接运行的话,pRecord->Open()会抛出一个错误:Table 'mydb.mytable' doesn't exist。就是数据库是空的!

在这里往数据库中添加一些数据:

1. 打开MySQL 5.7 Command Line Client - Unicode(MySQL安装时,安装的),输入密码,回车。

2、输入指令进行添加数据。shell命令参考:http://blog.csdn.net/w174504744/article/details/7884997

3、注意shell命令单词之间的空格!

大家都是初学者,数据库创建完成,我现在还没找到数据库具体放哪呢。

声明:程序是粘贴的别人的!测试好用。如有侵权,请告诉我。

OVER!

 

 

 

转载于:https://www.cnblogs.com/xunhanliu/p/10484961.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值