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
这段代码是一个宏定义,它定义了一个名为
__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,update bool update(string sql); //查询操作 MYSQL_RES* query(string sql); private: MYSQL *_conn; }; #endif
这段代码实现了一个 MySQL 数据库连接的封装类
- 初始化和释放数据库连接。
- 连接数据库。
- 执行更新操作(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,update if(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); //执行sql conn.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目录下执行
查看结果