做开发和数据库打交道肯定是必不可少的,因此各个语言都有其自己连接数据库的方式,JAVA,C++,C#等可以通过各种方式来连接数据库。C++也不例外,通常的方法有两种,一种是系统自带的ADO方法,一种是通过Mysql的接口进行连接。下面我们就来简单地利用Mysql的接口通过C++进行访问。
1.下载Mysql数据库
相信大家对这一步骤应该都不会陌生,这里提供Mysql的官网,大家可以去浏览一下Mysql的一些信息,更新版本等记本操作https://www.mysql.com/downloads/
2. 附加包含目录
选择你的项目-右键-属性-》C++-》常规 -》附加包含目录。在这里添加你所下载mysql的include文件夹。
说明:我们都知道引用第三方库的时候需要用到头文件,一般头文件会在Include的文件夹下,因此在你项目最前面#include"XXX.h" 的时候就可以在该目录下寻找你要引用的头文件了。
3.添加库目录
说明:这里包含的是lib库的目录,针对静态库和动态库的问题大家可以自行去搜索一下相关知识点,一般下载下来的第三方库的静态文件放在lib目录下,大家应该找到自己对应的lib文件夹。
4.添加动态库
说明:这里需要添加mysql的库文件,因为上一步我们已经添加了库所在的目录,因此在这里可以直接添加现有的库即可。
以上是一个搭建连接MySql数据库的环境,我认为可以这么理解,一个目录对应一个内容。你需要用到Mysql的头文件,你就需要"附加包含目录"中找到对应的include文件夹。你要用到Mysql编写好的库,你就需要添加好对应的库目录,如第三步,同时再把该库给添加进去,这样就可以包含Mysql的头文件并且引用Mysql的API了。
5.添加数据
这里我们在Navicat中添加两条数据,我们可以看到该表名叫studentagain,里面有两条数据。
6.查询数据
#include "iostream"
#include <winsock.h> //不包含这个Socket会报错,因为mysql.h里面有一些Socket的内容
#include <mysql.h>//控制台项目中要在mysql.h之前include <winsock.h>
using namespace std;
int main()
{
MYSQL *pConn; //定义一个结构体指针
pConn = mysql_init(NULL); //回调函数,用来初始化Mysql数据库
//第2、3、4、5参数的意思分别是:服务器地址、用户名、密码、数据库名,第6个为mysql端口号(0为默认值3306)
if (!mysql_real_connect(pConn, "localhost", "root", "123456", "mysql", 0, NULL, 0))
{
printf("无法连接数据库:%s", mysql_error(pConn));
return false;
}else
{
cout << "连接数据库成功" << endl;
}
mysql_query(pConn, "set names gbk");//设置一下编码问题
if (mysql_query(pConn, "select * from studentagain")) //系统API,用来查询数据
{
printf("查询失败:%s", mysql_error(pConn));
return false;
}
else {
cout << "查询成功" << endl;
}
MYSQL_RES *result = mysql_store_result(pConn); //这里是将查询到的结果集存下来,放到result中去
MYSQL_ROW row; //return data as array of strings 返回一个类似数据集合的变量
while (row = mysql_fetch_row(result)) // 从当前结果集result中获取数据,并且滑向下一行,取到最后一行返回false
{
printf("%s %s %s %s %s\n", row[0], row[1], row[2], row[3], row[4]); //依次输出当前数据的内容
}
system("pause");
mysql_free_result(result); //释放结果集
mysql_close(pConn); //关闭当前指针对象
return 0;
}