一、开发环境

Win8.1 64位、VS2013、MySQL5.5.3764位

MySQL安装目录为:C:\Program Files\MySQL\MySQL Server 5.5

二、配置工程环境
首先创建一个控制台空项目,打开VS2013,文件--> 新建项目 --> 常规 --> 选择“空项目”


      因为我们要使用MySQL数据库的API接口编程,所以需要将工程的附加头文件搜索目录和附件库文件搜索目录,指向MySQL安装目录对应的位置,下面是我机子上mysql库和头文件目录:


将VS2013工程的附加头文件目录和附加库目录指向上面两个目录。

1> 配置头文件目录
打开工程配置属性窗口--> C/C++ --> 常规 --> 附加包含目录,把mysql的include目录添加到附加包含目录中,如下图所示:





2> 配置库文件目录
打开工程配置窗口--> 链接器--> 常归 --> 附加库目录,把mysql的lib目录添加到附加库目录中,如下图所示:


打开工程配置窗口--> 链接器--> 输入-->附中依赖项,打libmysql.lib静态库添加到工程编译依赖项,如下图所示:





将libmysql.dll动态库拷贝到工程的根目录或Debug目录下:



三、测试开发环境
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <mysql.h> void testQuery(MYSQL *mysql); // 测试查询数据 void main()
{
MYSQL *mysql = NULL; /*初始化MYSQL连接句柄*/
mysql = mysql_init((MYSQL *)0);
if (!mysql)
{
return;
} /*
连接数据库,连接成功返回conn,否则返回NULL
参数1:mysql_init初始化数据库返回的MYSQL句柄
参数2:数据库服务器地址
参数3:数据库用户名
参数4:数据库密码
参数5:数据库名称
参数6:数据库端口,为0表示默认3306
参数7:如果unix_socket不是NULL,字符串指定套接字或应该被使用的命名管道。注意host参数决定连接的类型
参数8:通常是0
*/
mysql = mysql_real_connect(mysql, "localhost","root", "root",
"test", 0, NULL, 0);
if (mysql)
{
printf("connection succellfull the database!\n");
}
else
{
printf("connection error:%d, %s\n",mysql_errno(mysql), mysql_error(mysql));
} // 查询数据
testQuery(mysql); // 关闭连接
mysql_close(mysql); system("pause");
} // 测试查询
void testQuery(MYSQL *mysql)
{
MYSQL_ROW row;
MYSQL_RES *res = NULL;
MYSQL_FIELD *fields = NULL;
int i, field_count;
char *sql = "select * from t_user";
int flag = mysql_real_query(mysql, sql, (unsigned long)strlen(sql));
if (flag)
{
printf("Query error:%d, %s\n",mysql_errno(mysql), mysql_error(mysql));
return;
} // 将查询结果读到内存当中
res = mysql_store_result(mysql); // 获取结果集中的所有字段
fields = mysql_fetch_fields(res); // 字段数量
field_count = mysql_field_count(mysql);
for (i = 0; i < field_count; i++)
{
printf("%s\t", fields[i].name);
} printf("\n"); // 遍历结果集的每一行数据
while (row = mysql_fetch_row(res))
{
for (i = 0; i < field_count; i++)
{
printf("%s\t", row[i]);
}
printf("\n");
}
}

mysql测试数据及表结构:

DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`address` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; LOCK TABLES `t_user` WRITE;
INSERT INTO `t_user` VALUES (1,'zhangsan',22,'hunan'),(2,'lisi',30,'beijin');
UNLOCK TABLES;

测试结果:

小结配置步聚:

1> 安装mysql

2> 创建VS工程,配置工程头文件(mysql.h所在目录)和库文件(libmysql.lib所在目录)附加目录,指向mysql对应的目录

3> 将libmysql.dll动态库拷贝到工程根目录或Debug目录

4> 编写测试程序,验证C连接Mysql数据库

----------------------------------------------------------------------优雅的分割线------------------------------------------------------------------------------------

常见错误:

1、main.obj : error LNK2019: 无法解析的外部符号 mysql_init。。。。。

原因是没有在工程当中添加libmysql.lib配置,配置库文件目录

2、无法启动此程序,因为计算机中丢失libmyslq.dll。。。。

将libmysql.dll动态库拷贝到工程的根目录或Debug目录下。

3、未引入windows.h头文件,因为在windows连接mysql是通过socket方式与数据库进行通信的

4、main.obj : error LNK2019: 无法解析的外部符号 _mysql_init@4,该符号在函数 _main 中被引用.....

数据库位数与编译位数不一致,导致在链接时mysql的库函数找不到,比如:我的mysql是64位,提供的库当然是64位的,如果你在VS上用32位的平台去编译就会造成链接时出错。

修改编译平台,工程-->属性-->配置管理器-->在解决方案的工程列表中选择对应的项目,并将其修改成32位或64位,如果没有就新建一个。

工程源码下载:Windows平台C连接MySQL数据库

参考文档:

C/C++连接MySql数据库

C连接MySQL数据库开发之Windows环境配置及测试的更多相关文章

  1. C连接MySQL数据库开发之Windows环境配置及测试(转)

    http://blog.csdn.net/xyang81/article/details/26814633(转)

  2. C连接MySQL数据库开发之Xcode环境配置及测试

    一.开发环境 Mac OS X 10.9.2 64位.Xcode5.1.MySQL5.5.37 64位 MySQL安装目录为:/usr/local/mysql 二.配置xcode连接mysql的编译选 ...

  3. C连接MySQL数据库开发之Linux环境完整示例演示(增、删、改、查)

    一.开发环境 ReadHat6.3 32位.mysql5.6.15.gcc4.4.6 二.编译 gcc -I/usr/include/mysql -L/usr/lib -lmysqlclient ma ...

  4. Android 开发之Windows环境下Android Studio安装和使用教程(图文详细步骤)

    鉴于谷歌最新推出的Android Studio备受开发者的推崇,所以也跟着体验一下. 一.介绍Android Studio  Android Studio 是一个Android开发环境,基于Intel ...

  5. Android开发之 Windows环境下通过Eclipse创建的第一个安卓应用程序(图文详细步骤)

    第一篇  windows环境下搭建创建的第一个安卓应用程序 为了方便,我这里只采用了一体包进行演示. 一.下载安卓环境的一体包. 官网下载:安卓官网(一般被墙了) 网盘下载: http://yunpa ...

  6. Android 开发之Windows环境下Android Studio安装和使用教程

    JDK环境配置: http://www.cnblogs.com/liuhongfeng/archive/2015/12/30/5084896.html Android Studio下载地址:http: ...

  7. solidity开发之windows下配置remix本地环境遇到的问题及解决

    本人按照这个教程配置remix本地环境.[https://cloud.tencent.com/developer/article/1374376] win+R打开管理员终端,在欲配置为本地目录的路径执 ...

  8. 远程连接 mySql数据库

    远程连接 mySql数据库 一.安装并配置MySQL1.安装MySQL:运行mysql-essential-6.0.11-alpha-win32,按“MySQL+6.0+Windows下安装图解”完成 ...

  9. R连接mysql数据库方法详解

    Warning messages: 1: In odbcDriverConnect("DSN=Rdata;UID=root") : [RODBC] ERROR: state IM0 ...

随机推荐

  1. 安装Win7和Ubuntu12.04双系统后,意外删除Ubuntu12.04引导文件,出现error:unknown filesystem;grub rescue>错误的解决方案

    很久之前在Win7基础上安装了Ubuntu12.04系统,采用硬盘安装的方法.分了1个10G的硬盘分区F盘用于存放Ubuntu12.04的引导文件,其实完全可以制作一个Ubuntu12.04的U盘启动 ...

  2. saveFileDialog

    saveFileDialog1.ShowDialog saveFileDialog.FileName 设置的时候是一个字符串. 如: 新建 RTF 文档.rtf 获得的时候 则为一个完整的路径. 如: ...

  3. 【转】jsoncpp在xcode中的使用

    http://blog.csdn.net/ashqal/article/details/8573392 考虑到cocos2dx需要使用jsoncpp做关卡的设置, 尝试用源代码直接放到项目以方便后期生 ...

  4. 样式 style="clear:both"

    <div style="clear:both"></div>clear:both该属性的值指出了不允许有浮动对象的边.通俗的讲:这段代码的做用是:清除同行元 ...

  5. fiddler接口测试

    浏览器中,可直接进行get接口测试:调用post方法的接口测试可用fiddler测试(当然,fiddler也支持get),如下图 [Execute]后双击左侧请求记录记录即可查看响应结果

  6. C# - winform使用Dictionary的时候,程序一闪而过!

    概述: 具体也不知道是多线程造成,还是Dictionary的缺陷. 解决方案: 1.如果可能会添加相同键值,你就别用add,直接添加键值,这样不报错 2.使用Try...catch可以捕获异常. 3. ...

  7. 一道JS addEventListener面试题

    在园里看到一道面试题,<div id="test">Click Here</div> var node=document.getElementById('t ...

  8. oracle set命令

    SQL>set colsep' ';     //-域输出分隔符SQL>set echo off;     //显示start启动的脚本中的每个sql命令,缺省为onSQL> set ...

  9. Shell: extract more from listener.log(分析监听日志)

    最近遇到了两起数据库连接数不足的问题, 通常都会预留一些会话增加的情况, 但在一些特殊情况下如连接风暴(logon storm), 如果在监听中没有做rate限流,对数据库来说巨大的冲击可能会导致数据 ...

  10. 使用oracle的SQL Developer创建用户的方法

    这里针对的是Oracle11g,其它版本的没测试过不知道. 首先,使用system建立连接,密码是你安装时指定的那个密码,然后在最下面的“其它用户”中创建一个新用户. 注意1:创建完毕后一定要注意要在 ...