1. Linux平台准备
(1)安装SDK开发包的命令
sudo apt-get install libmysqlclient-dev
(2)编译时需要链接的库:-lmysqlclient
2. mysql 的初始化和清理
#include
MYSQL mysql1; //创建句柄
mysql_init(&mysql1); //初始化句柄
mysql_close(&mysql); //关闭句柄
3. mysql 的连接登录
(1)连接登录 mysql_real_connect
const char *p = "192.168.126.215"; //配置ip
const char *user = "root"; //配置用户名
const char *password" = "123456"; //配置密码
const char *db = "test"; //配置要打开的数据库
if ( mysql_real_connect(&mysql1, ip, user, password, db, 13306, nullptr, 0) == 0) //等于0则打开失败
{
cout<<"connect error"<
(2)设置断开自动重连
//设置断开重连的功能
int ret = 1;
mysql_options(&mysql1, MYSQL_OPT_RECONNECT, &ret);
//中间的宏表示如果发现连接丢失,则启动与服务器的自动再连接;
//设置自动检测的超时时间
int timeout = 3;
mysql_options(&mysql1, MYSQL_OPT_CONNECT_TIMEOUT, &timeout);
//中间的宏表示以秒为单位的连接超时,即超过3秒就启动重新连接
//设置是否连接的检测
if( mysql_ping(&mysql1) != 0 )
{
cout<<"connect failed"<
4. mysql 的数据查询
(1)执行sql语句,注意:执行sql语句后,必须获取结果集并且清理;
//创建表
string sql = "create table person(id int, name varchar(20), age int";
mysql_real_query(&mysql, sql.c_str(), sql.size());
//mysql_query(&mysql, sql.c_str()); 和上面不同的是,这里并没有指定长度,执行效率没有上面的快
//对于包含二进制数据的查询,必须使用mysql_real_query(),因为二进制代码数据可能包含‘\0’字符;
//插入数据
string sql2 = "insert into person(id, name, age)values(1, 'zhangsan', 14);
mysql_real_query(&mysql, sql2.c_str(), sql2.size());
//查询数据
string sql3 = "select * from person";
mysql_real_query(&mysql, sql3.c_str(), sql3.size());
(2)获取结果集
//获取结果集
MYSQL_RES *result; //定义一个MYSQL_RES结构;
result = mysql_use_result(&mysql1); //将查询结构保存在result中;
if(result == nullptr)
{
cout<<"select error"<
(3)清理结果集
//释放结果集的指针空间
mysql_free_result(result);
整体示例如下:
#include
#include
#include
using namespace std;
int main(int argc, char **argv)
{
MYSQL mysql1;
mysql_init(&mysql1);
const char *ip = "192.168.226.128";
const char *user = "root";
const char *password = "123456";
const char *db = "test";
if(mysql_real_connect(&mysql1, ip, user, password, db, 13306, nullptr,0) == 0)
{
cout<<"connect error"<
运行结果如下:
5. mysql 显示中文
//设置中文的思路是统一设置字符集为utf8;
const char * csname = "utf8";
mysql_set_character_set(&mysql, csname);
6. 图片存储与读取保存的例子
#include
#include
#include
#include
#include
#include