

1.2从user拿出来User和Host

mysql> create user '自己取的名字'@'localhost' identified by '自己的密码';






如果没有下载:下载头文件;可以用这个命令下载一下:
sudo apt install libmysqlclient-dev

vim /etc//mysql//mysql.conf.d/mysqld.cnf
自己添加即可



#include <mysql/mysql.h>#include <iostream>
#include <mysql/mysql.h>
int main() {
printf("mysql client Version: %s\n", mysql_get_client_info());
return 0;
}test:test.cc
g++ -o $@ $^ -std=c++11 -lmysqlclient
.PHONY:clean
clean:
rm -f test
MySQL :: MySQL 9.1 C API Developer Guide
要使用库,必须先进行初始化! 常用接口 mysqld是一套网络服务那么就注定了我们在进行mysql操作之前,一定是要能链接上mysql,所以要在之前创建一些基础的mysql数据结构。
MySQL :: MySQL 8.0 C API Developer Guide :: 5.4.41 mysql_init()

int main()
{
MYSQL* my = mysql_init(nullptr);
if(my == nullptr)
{
cerr<< "init MySQL error" <<endl;
return 1;
}
return 0;
}MySQL :: MySQL 5.7 C API Developer Guide :: 5.4.5 mysql_close()


MySQL :: MySQL 8.0 C API Developer Guide :: 5.4.58 mysql_real_connect()
初始化完毕之后,必须先链接数据库,在进行后续操作。(mysql网络部分是基于TCP/IP的)


const string host = "localhost";
const string user = "ljw";
const string passwd = "ljw031126";
const string db = "jj";
const unsigned int port = 6666;#include <iostream>
#include <string>
#include <mysql/mysql.h>
using namespace std;
const string host = "localhost";
const string user = "ljw";
const string passwd = "ljw031126";
const string db = "jj";
const unsigned int port = 6666;
int main()
{
MYSQL* my = mysql_init(nullptr);
if(my == nullptr)
{
cerr<< "init MySQL error" <<endl;
return 1;
}
if(mysql_real_connect(my, host.c_str(), user.c_str(), passwd.c_str(), db.c_str(), port, nullptr, 0) == nullptr)
{
cerr<< "connect MYSQL error" <<endl;
return 2;
}
//到这就链接成功了
cout<< "success" <<endl;
//关闭~
mysql_close(my);
return 0;
}测试:

设置链接的默认字符集是utf8,原始默认是latin1
MySQL :: MySQL 5.7 C API 开发指南 :: 5.4.69 mysql_set_character_set()

mysql_set_character_set(myfd, "utf8");若关闭mysql服务就会连接失败


show processlist;


MySQL :: MySQL 8.4 C API 开发指南 :: 5.4.57 mysql_query()

#include <iostream>
#include <string>
#include <mysql/mysql.h>
#include <unistd.h>
using namespace std;
const string host = "localhost";
const string user = "ljw";
const string passwd = "ljw031126";
const string db = "jj";
const unsigned int port = 6666;
int main()
{
MYSQL* my = mysql_init(nullptr);
if(my == nullptr)
{
cerr<< "init MySQL error" <<endl;
return 1;
}
if(mysql_real_connect(my, host.c_str(), user.c_str(), passwd.c_str(), db.c_str(), port, nullptr, 0) == nullptr)
{
cerr<< "connect MYSQL error" <<endl;
return 2;
}
string sql;
while(true)
{
cout<< "MYSQL>>>";
if(!getline(cin, sql) || sql == "quit")
{
cout<< "bye bye" <<endl;
break;
}
int n =mysql_query(my, sql.c_str());
if(n == 0)
{
cout<< sql << "success: " << n <<endl;
}
else{
cerr<< sql << "faild" <<endl;
}
}
//到这就链接成功了
cout<< "success" <<endl;
//关闭~
mysql_close(my);
return 0;
}测试:
先创建个表,并给上权限

这里的;可以不用加 (这里测试时,没法直接back,要按住ctrl 和 back一起)




增删改是最简单的,只需要保证这个是成功的
这个select不行,没结果
MySQL :: MySQL 8.0 C API 开发指南 :: 5.4.84 mysql_store_result()

把结果转储到MYSQL_RES了(是为了更好的做二次处理)





这样的话结果就拿到了

这样就可以打印出来了



MySQL :: MySQL 5.7 C API Developer Guide :: 5.4.19 mysql_fetch_fields()


打印结果

很多内容属性都可以查


