MYSQL是使用较为广泛的开源数据库,官方提供的API是C/C++程序员连接至MYSQL编程的一种很方便的方法。下面简单介绍该方法的具体实现步骤。首先推荐一本MYSQL中文手册[下载],里面有详细的API函数介绍,本教程只演示C++连接到MYSQL的简单过程,具体的开发大家还要常去查阅手册。好了,言归正传,我们开始吧!
环境VS2015
1:新建空项目;
2:配置项目属性:
在项目上右键,选择属性,选择VC++目录标签页,将MYSQL的include文件夹和lib文件夹路径分别添加到包含目录和库目录。如作者本机上include路径为 C:\Program Files\MySQL\MySQL Server 5.7\include,lib路径为C:\Program Files\MySQL\MySQL Server 5.7\lib。具体操作为,点击包含目录右侧下拉菜单,选择编辑,选择新行,将上面的include路径添加进去
类似的,将lib路径添加到库目录中去。
3 添加libmysql.lib至附加依赖项中:(链接器--->输入--->附加依赖项)
4 作者使用的mysql是64位的,因此需要将项目的解决方案平台由win32改成x64,视平台而定(调试--->平台)
5 将C:\Program Files\MySQL\MySQL Server 5.7\lib(视具体目录而定)下的libmysql.dll文件拷贝到项目生成目录中去,否则运行提示缺少动态库!
好了,配置过程总算完成了,还算简单吧!
下面我们尝试读取一个数据库表格
首先建议一个名为mydb的数据库,新建一个名为student的表,表的内容如下:
我们就尝试用C++读取表内容并输出至屏幕,直接上代码
#include <Windows.h>
#include <mysql.h>
#include <string>
#include <iostream>
using namespace std;
int main()
{
const char user[] = "root";
const char pswd[] = "930808";
const char host[] = "localhost";
const char dbname[] = "mydb";
unsigned int port = 3306;
MYSQL mysql1;
MYSQL_RES *result;
MYSQL_ROW sql_row;
MYSQL_FIELD *fields;
int res;
mysql_init(&mysql1);
if (mysql_real_connect(&mysql1, host, user, pswd, dbname, port, NULL, 0))
{
mysql_query(&mysql1, "SET NAMES GBK"); //设置编码格式
res = mysql_query(&mysql1, "select * from student");//查询
if (!res)
{
result = mysql_store_result(&mysql1);
if (result)
{
unsigned int num_column, num_row; //记录表格大小
num_column = mysql_num_fields(result);
num_row = mysql_num_fields(result);
fields = mysql_fetch_field(result);
cout << endl;
for (int i = 0; i < num_column; ++i)
{
cout << fields[i].name << "\t";
}
cout << endl<<endl;
while (sql_row = mysql_fetch_row(result))//按行输出数据
{
for (int i = 0; i < num_row; ++i)
{
cout << sql_row[i] << "\t";
}
cout << endl;
}
}
}
else
{
cout << "query sql failed!" << endl;
}
}
else
{
cout << "connect failed!" << endl;
}
if (result != NULL)
mysql_free_result(result);
mysql_close(&mysql1);
system("pause");
return 0;
}
运行结果: