安装MYSQL
首先,要先安装MYSQL:
sudo apt-get install mysql-server mysql-client
默认的端口是3306,可以检查一下:
netstat -ntulp | grep 3306
试一下能不能进入MYSQL:
mysql -u root -p123456
这时候有一个问题,可能安装了MYSQL,但是登不进去。这是因为安装的时候没有出现让我们自己设置账号密码的环节。解决办法:
-
sudo cat /etc/mysql/debian.cnf
出现下面界面:
-
用默认的账号和密码登录:
mysql -u debian-sys-maint -pAELQ7KUX1avU0akc
出现下面界面:
-
修改账号密码
进入数据库:
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