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

一、开发环境

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数据库

时间: 2025-01-01 09:11:01

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

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

一.开发环境 Mac OS X 10.9.2 64位.Xcode5.1.MySQL5.5.37 64位 MySQL安装目录为:/usr/local/mysql 二.配置xcode连接mysql的编译选项 1> 将mysql头文件目录添加到xcode头文件搜索路径中 项目属性--> Build Settings --> Search Paths --> Header Search Paths,添加/usr/local/mysql/include 2> 将mysql库文件目录添加

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

一.开发环境 ReadHat6.3 32位.mysql5.6.15.gcc4.4.6 二.编译 gcc -I/usr/include/mysql -L/usr/lib -lmysqlclient main.c -o main.out -I:指定mysql头文件所在目录(默认去/usr/include目录下寻找所用到的头文件) -L:指定mysql动态库文件所在目录(默认从/usr/lib目录查找) -l:链接libmysqlclient.so动态库 -o:生成的可执行文件名 三.完整示例 //

mysql-微信公众平台开发PHP连接MySQL数据库

问题描述 微信公众平台开发PHP连接MySQL数据库 用PHP做微信公众平台开发,如何将用户回复的内容提交到数据库??求大神指教?? 解决方案 不管你是不是微信公共平台开发,php访问mysql都是一样的. 参考:http://www.cnblogs.com/csensix/archive/2012/05/23/2515494.html 解决方案二: 微信公众平台开发(PHP)(一) 配置接口微信公众平台开发之连接数据库微信公众平台接口开发之PHP版

JDBC连接MySQL数据库及演示样例

JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,能够为多种关系数据库提供统一訪问,它由一组用Java语言编写的类和接口组成.JDBC为数据库开发者提供了一个标准的API,据此能够构建更高级的工具和接口,使数据库开发者能够用纯 Java API 编写数据库应用程序,而且可跨平台执行,而且不受数据库供应商的限制. 1.跨平台执行:

Ruby 连接MySQL数据库

使用Ruby连接数据库的过程还真的是坎坷,于是写点文字记录一下. 简介 Ruby简介 RubyGems简介 包管理之道 比较著名的包管理举例 细说gem 常用的命令 准备 驱动下载 dbi mysql mysql2 MySQL的CC连接器 测试环境 代码测试 连接数据库 CRUD Select Delete Update Insert 仿PreparedStatement 假冒伪劣版 假冒伪劣进阶版 处理结果集 表结构 结果集遍历 总结 简介 Ruby简介 Ruby是一种纯粹的面向对象编程语言.

MFC连接MySQL数据库时编辑框出现中文乱码

环境:Visual Studio 2010 + MySQL Server 5.1 + Navicat for Mysql 8.2 问题:MFC连接MySQL 数据库,编辑框出现中文乱码. 解决: 使用MySQL C API,在连接上数据库查询数据前加上 如下代码: mysql_query(&m_sqlCon,"SET NAMES 'GB2312'"); //m_sqlCon是MYSQL类型 查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www

EntityFramework 6.0&lt; Code First &gt; 连接 Mysql数据库

原文:EntityFramework 6.0< Code First > 连接 Mysql数据库 网上有很多关于用EntityFrame来连接Mysql数据库的教程,可是很多并不靠谱,转载的太多了.找了很久,总算是配置好了,现在分享一下. 一,安装:     1.开发环境: VS2013与EF6     2.Mysql数据库为:Mysql Server 6.0     3.安装:Mysql for Visual Studio 1.1.1             下载位置:https://cdn

linux下python3连接mysql数据库问题_linux shell

python语言的3.x完全不向前兼容,导致我们在python2.x中可以正常使用的库,到了python3就用不了了.比如说mysqldb 1.安装pymysql pymysql就是作为python3环境下mysqldb的替代物,进入命令行,使用pip安装pymysql pip install pymysql3 2.使用pymysql 在我们需要使用数据库的.py文件开头添加下面两行 import pymysql pymysql.install_as_MySQLdb() 第一行是引入pymysq

C#连接MYSQL数据库并进行查询

之前用MFC开发结果界面太难看被pass了,要求用C#重新来开发>_<,不过终于摆脱VC6.0的蛋疼操作了Y. 先来连接数据库 (1)用c#连接MYSQL数据库需要用到mysql-connector-net,这个组件网上查找就可以下载,安装直接按next,按默认路径安装: (2)新建一个Winfrom工程后,引用这个组件 在解决方案资源管理器中右键引用->添加引用->浏览,浏览路径为安装mysql-connector-net的路径,如我的路径为:C:\Program Files (