ubuntu下mysql数据库的安装
ubuntu安装mysql(图文详解)-CSDN博客https://blog.csdn.net/qq_58158950/article/details/135667062?spm=1001.2014.3001.5501
项目目录结构
数据库及表结构
public.h
//打印错误信息
#ifndef PUBLIC_h
#define PUBLIC_H#include<iostream>
using namespace std;// 打印源文件的文件名、所造行号和时间戳
#define LOG(str)\cout<<__FILE__<<":"<<__LINE__<<" "<<\__TIMESTAMP__<<" : "<<str<<endl;#endif
这段代码是一个宏定义,它定义了一个名为 LOG
的宏。
__FILE__
是一个预定义宏,它会在编译时被替换为当前源文件的文件名(包括路径)。__LINE__
也是一个预定义宏,它会在编译时被替换为当前代码所在的行号。__TIMESTAMP__
是一个非标准的宏,在许多编译器中并不支持。它被替换为编译时的时间戳。
该宏的作用是在输出日志时打印出当前源文件的文件名、所在行号和时间戳,以及传入的日志内容。
MySqlConn.hpp
//与mysql进行交互的类,包括mysql的连接已经操作
#ifndef MYSQLCONN_H
#define MYSQLCONN_H
#include<string>
#include "mysql/mysql.h"class MySqlConn
{
public://初始化数据库连接MySqlConn();//释放数据库连接~MySqlConn();//连接数据库bool connection(string ip,unsigned short port,string user,string passwd,string dbname);// bool connection();//更新操作,insert,delete,updatebool update(string sql);//查询操作MYSQL_RES* query(string sql);private:MYSQL *_conn;
};
#endif
这段代码实现了一个 MySQL 数据库连接的封装类 MySqlConn
,该类提供了以下功能:
- 初始化和释放数据库连接。
- 连接数据库。
- 执行更新操作(insert, delete, update)。
- 执行查询操作(select)并返回结果集。
MySqlConn.cpp
#include "public.h"
#include "MySqlConn.hpp"//初始化数据库连接
MySqlConn::MySqlConn()
{//初始化数据库连接_conn=mysql_init(nullptr);
}
//释放数据库连接
MySqlConn::~MySqlConn()
{if(_conn!=nullptr){mysql_close(_conn);}
}//连接数据库
// bool MySqlConn::connection()
bool MySqlConn::connection(string ip,unsigned short port,string user,string passwd,string dbname)
{MYSQL* p=mysql_real_connect(_conn,//数据库连接//mysql数据库内部使用c风格的字符串,需要使用c_str()函数将string类型字符串进行转换ip.c_str(),//ip地址user.c_str(),//用户名passwd.c_str(),//密码dbname.c_str(),//数据库名称port,//mysql端口号nullptr,0);if(p){mysql_query(_conn,"SET NAME UTF8");// mysql_options(_conn, MYSQL_SET_CHARSET_NAME, "gb2312");}LOG("数据库连接成功!");return p;
}//更新操作
bool MySqlConn::update(string sql)
{//insert,delete,updateif(mysql_query(_conn,sql.c_str())){LOG("更新失败:"+sql);const char* errorMsg = mysql_error(_conn);LOG("错误信息:" + string(errorMsg));return false;}return true;
}
//查询操作,select
MYSQL_RES* MySqlConn::query(string sql)
{if(mysql_query(_conn,sql.c_str())){LOG("查询失败:"+sql);LOG("错误信息:" + string(mysql_error(_conn)));return nullptr;}return mysql_use_result(_conn);
}
sprintf()
函数是 C 语言标准库中的一个格式化输出函数,它的原型如下:
int sprintf(char *str, const char *format, ...);
sprintf()
函数的作用是将格式化的字符串输出到指定的字符数组str
中。它的参数与printf()
函数类似,第二个参数format
是格式化字符串,后面的可变参数则是要输出的数据。
sprintf()
返回输出的字符数,如果出错,则返回一个负数。
sprintf()
函数可以用于将格式化的数据转换为字符串,然后将字符串输出到一个缓冲区中。
main.cpp
#include<iostream>
#include"public.h"
#include"MySqlConn.hpp"
using namespace std;int main()
{// LOG("this is log msg!!!");string ip = "127.0.0.1";string user = "root";string passwd = "123456";string dbname = "chat";MySqlConn conn;//创建mysql对象//定义sql语句char sql[1024]={0};sprintf(sql,"insert into user(name,age,sex) values('%s',%d,'%s')","jack",20,"male");//连接数据库conn.connection(ip,3306,user,passwd,dbname);//执行sqlconn.update(sql);return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
project(mysql)# 编译配置选项
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -g)# 配置可执行文件的生成路径
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)aux_source_directory(. SRC_LIST)add_executable(mysqltest ${SRC_LIST})
target_link_libraries(mysqltest mysqlclient)
进入build文件夹中编译
cmake ..
make
进入bin目录下执行
查看结果