Linux下将MYSQL结合到C++代码中

安装MYSQL

首先,要先安装MYSQL:

sudo apt-get install mysql-server mysql-client

默认的端口是3306,可以检查一下:

netstat -ntulp | grep 3306

试一下能不能进入MYSQL:

mysql -u root -p123456

这时候有一个问题,可能安装了MYSQL,但是登不进去。这是因为安装的时候没有出现让我们自己设置账号密码的环节。解决办法:

  1. sudo cat /etc/mysql/debian.cnf 

    出现下面界面:

  2. 用默认的账号和密码登录:

    mysql -u debian-sys-maint -pAELQ7KUX1avU0akc

    出现下面界面:

  3. 修改账号密码

    进入数据库:

    use mysql; 

    修改密码:

    update mysql.user set authentication_string=password('123456') where user='root' and Host ='localhost'; 
    update user set  plugin="mysql_native_password";  
    flush privileges;
    quit;

使用MYSQL

用到的头文件在:

#include <mysql/mysql.h>

里面有一个类:MYSQL

这个类实例化一个对象:

MYSQL* mysql;

如果要得到查询的结果的话需要用到这个对象。

需要开辟一下内存地址:

mysql = mysql_init(nullptr);

首先要进入(连接)数据库,就和如下命令行差不多的操作:

mysql -u root -p123456

 那在C++里是这样的:

MYSQL *p = mysql_real_connect(mysql, ipad.c_str(), user.c_str(), password.c_str(), dbname.c_str(), port, nullptr, 0);
/*
ipad是IP地址
user是账号
password是密码
dbname是数据库
port是端口号
*/

接下来就是用C++来操作数据库啦。

建表:

string sql = "create table testtable(id int primary key, name varchar(20));"; // 建表
mysql_query(mysql, sql.c_str());

插入数据:

sql = "insert into testtable values(1,'zhu');"; // 插入数据
mysql_query(mysql, sql.c_str());

查询:

sql = "select * from testtable where id = 1;"; // 查询数据
mysql_query(mysql, sql.c_str());

打印查询的数据:

MYSQL_RES *res = mysql_use_result(mysql);
MYSQL_ROW row = mysql_fetch_row(res);
cout << "id: " << atoi(row[0]) << endl;
cout << "name: " << row[1] << endl;

代码原文:

#include <mysql/mysql.h>
#include <iostream>
#include <string>

using namespace std;

int main()
{
    MYSQL *mysql;
    mysql = mysql_init(nullptr);
    string ipad = "127.0.0.1";
    string user = "root";
    string password = "123456";
    string dbname = "testmysql"; // 这是已经建好的数据库。
    int port = 3306;
    MYSQL *p = mysql_real_connect(mysql, ipad.c_str(), user.c_str(), password.c_str(), dbname.c_str(), port, nullptr, 0);

    string sql = "create table testtable(id int primary key, name varchar(20));"; // 建表
    mysql_query(mysql, sql.c_str());

    sql = "insert into testtable values(1,'zhu');"; // 插入数据
    mysql_query(mysql, sql.c_str());

    sql = "select * from testtable where id = 1;"; // 查询数据
    mysql_query(mysql, sql.c_str());

    MYSQL_RES *res = mysql_use_result(mysql);
    MYSQL_ROW row = mysql_fetch_row(res);
    cout << "id: " << atoi(row[0]) << endl;
    cout << "name: " << row[1] << endl;
}

编译:

g++ -o test main.cpp -lmysqlclient

输出:

id: 1
name: zhu

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值