C++利用MySql API方式连接数据库

       做开发和数据库打交道肯定是必不可少的,因此各个语言都有其自己连接数据库的方式,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;

}

注意:有两点需要注意:你需要把你的编译平台改成64位的,因为我们电脑是64位的,因此如果不进行更改则不能正确地执行libmysql.lib这个库。  2.需要把lib文件夹下面地libmysql.dll动态库拷贝到你生成.exe的文件夹下,这样才能找到你需要的动态库。

 

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页