c++ mysql数据库编程(linux系统)

ubuntu下mysql数据库的安装

ubuntu安装mysql(图文详解)-CSDN博客icon-default.png?t=N7T8https://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,update
    bool update(string sql);
    //查询操作
    MYSQL_RES* query(string sql);

private:
    MYSQL *_conn;
};
#endif

这段代码实现了一个 MySQL 数据库连接的封装类 MySqlConn,该类提供了以下功能:

  1. 初始化和释放数据库连接。
  2. 连接数据库。
  3. 执行更新操作(insert, delete, update)。
  4. 执行查询操作(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目录下执行

 查看结果

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《C MySQL8.0数据库跨平台编程实战笔记》是一本介绍如何在不同平台上使用C语言和MySQL8.0数据库进行编程的实用指南。本书从数据库的基本概念开始讲解,包括数据库的设计、表的创建和管理,以及SQL语句的基本使用方法。然后深入探讨了C语言和MySQL8.0数据库的结合,通过示例代码演示了如何在不同操作系统上使用C语言连接和操作MySQL8.0数据库。 本书以实战为主,介绍了在Windows、Linux和MacOS等不同平台上使用C语言编写跨平台的数据库程序的方法。读者可以通过学习本书,掌握在不同平台上使用C语言和MySQL8.0数据库的技巧和方法。此外,本书还介绍了一些实用的编程技巧和调试方法,帮助读者更好地应用C语言和MySQL8.0数据库进行开发和调试。 作者通过丰富的实例和详细的讲解,使读者能够快速掌握使用C语言和MySQL8.0数据库进行跨平台编程的技能。不论是初学者还是有一定开发经验的读者,都可以从本书中获得丰富的知识和经验。本书内容通俗易懂,深入浅出,适合作为C语言和数据库编程的入门指南,也适用于数据库开发人员和C语言程序员作为进阶学习和实践的参考。 总之,《C MySQL8.0数据库跨平台编程实战笔记》是一本实用性强、内容丰富的技术书籍,对于想要学习C语言和MySQL8.0数据库跨平台编程的读者来说是一本难得的好书。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值