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的就不要瞎搞了。我也不懂。
至此接口完成!
下面就能进行测试了,测试代码如下:
#include <Windows.h> #include <iostream> #include <string> using namespace std; #import "C:/Program Files/Common Files/System/ado/msado15.dll" no_namespace rename("EOF","adoEOF")rename("BOF","adoBOF") int main(int argc,char *argv[]) { CoInitialize(NULL); //Connect _ConnectionPtr pConn; pConn.CreateInstance(__uuidof(Connection)); try { HRESULT hr = pConn->Open("DSN=dsn;server=localhost;database=mydb;","user","password",adModeUnknown); } catch (_com_error&e) {
cout<< e.Description()<< endl;
return -;
} //Open _RecordsetPtr pRecord; pRecord.CreateInstance(__uuidof(Recordset)); pRecord->CursorLocation = adUseClient; pRecord->PutActiveConnection(pConn.GetInterfacePtr()); //Read try { pRecord->Open(_bstr_t("select * from mytable"), vtMissing,adOpenDynamic,adLockBatchOptimistic,adCmdText); } catch (_com_error &e) { cout<< e.Description()<<endl; //Table 'mydb.mytable' doesn't exist } while (!pRecord->adoEOF) { _variant_t vID = pRecord->GetCollect(_variant_t((long))); _variant_t vName = pRecord->GetCollect("name"); _variant_t vSex = pRecord->GetCollect("sex"); cout<< (char*)(_bstr_t)vName<< " "; cout<< (char*)(_bstr_t)vSex<< " "<<endl; pRecord->MoveNext(); } //Close pRecord->Close(); pConn->Close(); CoUninitialize(); return ; };
主要是配置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!
最新文章
- 动态加载多国语言 ---- cookie + 浏览器
- MVC下的客户端模板技术
- 第十八章 数据访问(In .net4.5) 之 I/O操作
- Shell命令合集
- SQL注入原理二
- Linux Stu
- java 判断浏览器
- math.h中的常量
- 试用mysql的infobright引擎
- C标准中一些预定义的宏
- hadoop搭建在Ubuntu16.04上
- java api1.8中文版(由谷歌,百度,有道,必应翻译).md
- ABP官方文档翻译 8.1 通知系统
- [Swift]LeetCode342. 4的幂 | Power of Four
- [MySQL Reference Manual]17 Group Replication
- maven插件之checkstyle
- solr(一) : 整合 tomcat
- React从0到1
- 遇到Elements in iteration expect to have &#39;v-bind:key&#39; directives.&#39; 这个错误
- generatorConfig.xml
热门文章
- POJ 2502 Dijkstra OR spfa
- 访问Storm ui界面,出现Nimbus Summary或Supervisor Summary时有时无的问题解决(图文详解)
- 【原创】不重启was server重新加载应用class文件
- 74HC164应用
- SpringCloud学习笔记(14)----Spring Cloud Netflix之Hystrix对Feign的支持
- OSI概述问答
- TypeError: Cannot use &#39;in&#39; operator to search for &#39;length&#39; in....
- SP10628 COT - Count on a tree 主席树
- WebRTC | Failed to execute &#39;setLocalDescription&#39; on &#39;RTCPeerConnection&#39;: Failed to parse SessionDescription. a=msid: Missing track ID in msid attribute.
- 一线 | 中国联通宣布首批5G手机到位