[原创+转载]在本地没有安装mysql数据库的情况下用c++代码实现连接远程mysql数据库

注: 要确保mysql账号是可以远程连接数据库的,  需要下载MySQL Connector C 6.1

MySQL Connector C 6.1的下载地址在: http://dev.mysql.com/downloads/connector/c/  要下载 32位的, [具体情况看mysql服务器是几位的]自己总结


本文对如何使用MySql的API连接MySql数据库,开发环境为VS2013


首先,建立一个windows应用程序的工程,将C/C++->预处理器->预处理器定义下的_WINDOWS改为_CONSOLE

[原创+转载]在本地没有安装mysql数据库的情况下用c++代码实现连接远程mysql数据库_第1张图片


将连接器->系统->子系统 选择为控制台。

[原创+转载]在本地没有安装mysql数据库的情况下用c++代码实现连接远程mysql数据库_第2张图片

由于我们要使用Mysql的API,并且我们机子上肯定安装了Mysql数据库,所以我们要将工程的头文件路径指向Mysql安装目录的同文件mysql.h所在的位置,将连接库路径指向libmysql.lib所在的路径,

在我的64位机子上,MySQL Connector C 6.1的安装路径为:C:\Program Files (x86)\MySQL\MySQL Connector C 6.1


将x项目属性页的C/C++->常规->附加包含目录指向:C:\Program Files (x86)\MySQL\MySQL Connector C 6.1\include

[原创+转载]在本地没有安装mysql数据库的情况下用c++代码实现连接远程mysql数据库_第3张图片


将项目属性页的链接器->常规->附加库目录指向:C:\Program Files (x86)\MySQL\MySQL Connector C 6.1\lib

[原创+转载]在本地没有安装mysql数据库的情况下用c++代码实现连接远程mysql数据库_第4张图片


将链接器->输入->附加依赖项中添加libmysql.lib。

[原创+转载]在本地没有安装mysql数据库的情况下用c++代码实现连接远程mysql数据库_第5张图片


如果不设置链接器->输入->附加依赖项中添加libmysql.lib,那么会出现如下的错误:
---------------------------------------------------------------------------------------------------------------
1>------ 已启动生成:  项目: Win32Project1, 配置: Debug Win32 ------
1>源.obj : error LNK2019: 无法解析的外部符号 _mysql_num_rows@4,该符号在函数 _main 中被引用
1>源.obj : error LNK2019: 无法解析的外部符号 _mysql_num_fields@4,该符号在函数 _main 中被引用
1>源.obj : error LNK2019: 无法解析的外部符号 _mysql_init@4,该符号在函数 _main 中被引用
1>源.obj : error LNK2019: 无法解析的外部符号 _mysql_real_connect@32,该符号在函数 _main 中被引用
1>源.obj : error LNK2019: 无法解析的外部符号 _mysql_query@8,该符号在函数 _main 中被引用
1>源.obj : error LNK2019: 无法解析的外部符号 _mysql_store_result@4,该符号在函数 _main 中被引用
1>源.obj : error LNK2019: 无法解析的外部符号 _mysql_free_result@4,该符号在函数 _main 中被引用
1>源.obj : error LNK2019: 无法解析的外部符号 _mysql_fetch_row@4,该符号在函数 _main 中被引用
1>源.obj : error LNK2019: 无法解析的外部符号 _mysql_fetch_field@4,该符号在函数 _main 中被引用
1>源.obj : error LNK2019: 无法解析的外部符号 _mysql_close@4,该符号在函数 _main 中被引用
1>c:\users\wayne\documents\visual studio 2013\Projects\Win32Project1\Debug\Win32Project1.exe : fatal error LNK1120: 10 个无法解析的外部命令
========== 生成:  成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
---------------------------------------------------------------------------------------------------------------

利用Mysql库提供的API编写连接Mysql和从Mysql中取出数据的代码

#include 
#include 
#include 
#include 
#include  
#include 
using namespace std;

int main()
{
	const char user[] = "root";         //username
	const char pswd[] = "1234";         //password
	const char host[] = "localhost";    //or"127.0.0.1"or自己的数据库ip
	const char table[] = "test";        //database
	unsigned int port = 3306;           //server port        
	MYSQL myCont;
	MYSQL_RES *result = NULL;
	MYSQL_ROW sql_row;
	MYSQL_FIELD *fd;
	char column[32][32];
	int res;
	mysql_init(&myCont);
	if (mysql_real_connect(&myCont, host, user, pswd, table, port, NULL, 0))
	{
		cout << "connect succeed!" << endl;
		mysql_query(&myCont, "SET NAMES GBK"); //设置编码格式,否则在cmd下无法显示中文
		res = mysql_query(&myCont, "select * from test");//查询
		if (!res)
		{
			result = mysql_store_result(&myCont);//保存查询到的数据到result
			if (result)
			{
				int i, j;
				cout << "number of result: " << (unsigned long)mysql_num_rows(result) << endl;
				for (i = 0; fd = mysql_fetch_field(result); i++)//获取列名
				{
					strcpy_s(column[i], fd->name);
				}
				j = mysql_num_fields(result);
				for (i = 0; i

运行结果


 
   
 
   
 
   
数据库里建了一张test表 两个字段, 一个是名字, 一个是年龄,插入了两条数据 如上图所试.
 
   
END
 
   

你可能感兴趣的:(数据库)