Mysql和vs2010 的连接
1.VS项目配置
使用的是API方式,使用Mysql的数据库资源,所以需要包含头文件、连接Lib和获取相应的dll文件。
首先,在VS2010下新建项目,设置项目的属性:
a.属性->C++目录->包含目录->设置..\MySQL\MySQL Server 5.5\include;
b.属性->C++目录->库目录->设置..\MySQL\MySQL Server 5.5\lib;lib文件夹下还有个debug目录,debug目录下也有个mysqlclient.lib(lib下也有,但比较下),建议添加设置..\MySQL\MySQL Server 5.5\lib\debug;
c.属性->链接器->输入->附加依赖项->添加libmysql.lib;
然后,在项目的头文件中添加
#include "winsock.h"
#include "mysql.h"
最后,运行项目,如果报错“缺少libmysql.dll”,把MySQL\MySQL Server 5.5\lib下的libmysql.dll复制到Debug文件夹下(Debug模式)。
2.程序实现
程序实现比较简单,代码如下:
#include <iostream> #include "winsock.h" #include "mysql.h" //#pragma comment(lib,"libmySQL.lib") using namespace std; bool main() {//connection params char *host = "localhost"; char *user = "root"; char *pass = "lffw";char *db = "datatest"; //已经建立的数据库unsigned int port = 3306; //server port MYSQL *sock; MYSQL_RES *res; MYSQL_FIELD * fd; MYSQL_ROW row; char szSqlText[500]="";int i = 0; int tcreate = 1;sock=mysql_init(0); if(sock &&mysql_real_connect(sock,host,user,pass,db,port,NULL,0)) { cout<<"connect mysql succeed!"<<endl; //mysql_set_character_set(sock,"utf8"); mysql_query(sock, "set names gb2312"); //mysql_query(sock, "SET NAMESGBK"); //设置编码格式,否则在cmd下无法显示中文,具体还未弄清if(tcreate) { sprintf(szSqlText,"create table datatable(id int(3) not null primary key,address varchar(20),year date) CHARACTER SET utf8");//构造SQL语句,新建一张表 cout<<"Create table!"<<endl; tcreate = 1; if(mysql_query(sock,szSqlText)){ cout<<"can't create table:"<<mysql_error(sock)<<endl; mysql_close(sock); return FALSE; } } sprintf(szSqlText,"insert into datatable values(1,'深圳一中','2010-10-08')"); cout<<"Insert data to table!"<<endl; if(mysql_query( sock, szSqlText)) { cout<<"Can't insert data to table"<<mysql_error(sock)<<endl; mysql_close( sock); return FALSE ; }sprintf(szSqlText, "select* from datatable"); cout<<"select* from datatable!"<<endl; if(mysql_query( sock, szSqlText)){ mysql_close( sock); return FALSE ; } else { cout<<"mysql_store_result!"<<endl; res=mysql_store_result(sock) ;//取得查询结果,保存查询到的数据到res i = (int)mysql_num_rows(res ) ;//取得有效记录数 cout<<"Query:"<<szSqlText<<"\n"<<i<<" records found:"<<endl; for( i = 0 ; fd =mysql_fetch_field( res ); i++ )//获取列名 cout<<fd->name<<"\t"; cout<<endl;while(row =mysql_fetch_row( res))//依次读取各条记录 cout<<row[0]<<"\t"<<row[1]<<"\t"<<row[2]<<endl; mysql_free_result(res); //释放结果资源 } } else{ cout<<"cannot connect to the sock sever "<<mysql_error(sock)<<endl; mysql_close(sock); return FALSE; }mysql_close(sock);system("pause"); return TRUE; }
3.C++关键代码
a.#pragma comment(lib,"XXX.lib")表示链接Ws2_32.lib这个库。和在工程设置里写上链入XXX.lib的效果一样,不过这种方法写的 程序别人在使用你的代码的时候就不用再设置工程settings了。在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。常用的:
#pragma region 名称 ... #pragma endregion //常用于大程序的区域分割
#pragma message("消息文本") Message 参数能够在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。
#pragma once (比较常用) 只要在头文件的最开始加入这条指令就能够保证头文件被编译一次,这条指令实际上在VC6中就已经有了,但是考虑到兼容性并没有太多的使用它。 #ifndef,#define,#endif这个是C++语言相关,这是C++语言中的宏定义,通过宏定义避免文件多次编译。所以在所有支持C++语言的编译器上都是有效的,如果写的程序要跨平台,最好使用这种方式
#pragma comment(...) 该指令将一个注释记录放入一个对象文件或可执行文件中。常用的lib关键字,可以帮我们连入一个库文件。
b.int mysql_query(MYSQL *mysql, const char *stmt_str)
这个函数,在mysql文档上看到“Zero if the statement was successful. Non-zero if an error occurred. ”
Mysql和vs2010 的连接相关推荐
- mysql安装连接测试c_C连接MySQL数据库开发之Windows环境搭建及测试_MySQL
一.开发环境 Win8.1 64位.VS2013.MySQL5.5.3764位 MySQL安装目录为:C:/Program Files/MySQL/MySQL Server 5.5二.配置工程环境 首 ...
- Win10 Wsl可以装mysql_WSL win10子系统linux-ubuntu 安装mysql root用户远程连接 开机启动mysql服务 用navicat连接登录...
0.若之前有装过mysql,需要先清除mysql相关的安装信息 apt-get remove mysql-server apt-get autoremove mysql-server apt-get ...
- 解决mysql获取不到连接的问题
解决mysql获取不到连接的问题 参考文章: (1)解决mysql获取不到连接的问题 (2)https://www.cnblogs.com/ELMND/p/4554248.html 备忘一下.
- mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案
mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案 参考文章: (1)mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案 (2)https://www.cnbl ...
- centos sqldeveloper 连接mysql,Oracle SQL Developer 连接 Mysql 等数据库
Oracle SQL Developer 个人感觉是比较好用的工具,因此除了连接oracle之外,还可以连接其他的数据库,如:MySQL,Access等.但是,它默认情况下只能连接Oracle和Acc ...
- ubantu mysql允许外部链接_ubuntu 下mysql 设置允许远程连接
ubuntu: 安装mysql-server,sudo apt-get install mysql-server mysql 安装成功后查看mysql状态:/etc/init.d/mysql stat ...
- mysql 57授权失败_MYSQL教程完美解决mysql客户端授权后连接失败的问题
<MYSQL教程完美解决mysql客户端授权后连接失败的问题>要点: 本文介绍了MYSQL教程完美解决mysql客户端授权后连接失败的问题,希望对您有用.如果有疑问,可以联系我们. MYS ...
- ubuntu mysql navicat_Ubuntu搭建MySQL,Navicat Premium连接
Ubuntu搭建MySQL,Navicat Premium连接 首先,撤销 (Ctrl Z)我们需要使用apt安装mysql,命令如下: sudo apt install mysql-server 安 ...
- MySQL中的外连接
MySQL中的外连接 外连接是指查询出符合连接条件的数据同时还包含孤儿数据. 一.孤儿数据 孤儿数据是指被连接的列的值为空的数据. 二.左外连接(left outer join) 左外连接包含左表的孤 ...
最新文章
- POJ 2749 Building roads
- [elk]elasticsearch dsl语句
- Unity手游之路十自动寻路Navmesh之跳跃,攀爬,斜坡
- 有了这个数据强一致“利器”,DBA们轻松修复数据对加班“say no”
- MyBatis直接执行SQL查询及批量插入数据
- 启用 Windows 功能 NetFx3 时出错,错误代码: -2146498529
- 李践《行动日志——目标管理》观后感
- AD20中PCB设计流程
- python网络编程内容_图解Python网络编程
- 如何做一个一键吸空投箱的效果
- JAVA代码实现人物照片的人像分割 | 百度AI
- 怎样开始学做自媒体?怎么起步?
- 云优化,集大成的可扩展平台是硬道理
- 液晶弹性自由能计算_液晶材料预倾角与弹性常量的关系
- 三维目标检测之ROS可视化
- 久久未至的Codevs1024一塔湖图解题报告
- 显示屏播放服务器S3的前身,道可视S3+高端音乐车机略胜一筹
- 多个Word文档,多张图片转PDF方式实现
- AI 操控战斗机战胜飞行员?道翰天琼认知智能机器人平台API接口大脑为您揭秘。
- HPE: smart storage: hpssacli: