集群聊天服务器---MySQL数据库的建立

数据库的建立表格

user表

字段名称 字段类型 字段说明 约束
id INT 用户id PRIMARY KEY, AUTO_INCREMENT
name VARCHAR(50) 用户名 NOT NULL, UNIQUE
password VARCHAR(50) 用户密码 NOT NULL
state ENUM('online', 'offline') 当前登录状态 DEFAULT 'offline'

friend表

字段名称 字段类型 字段说明 约束
userid INT 用户id NOT NULL, 联合主键
friendid INT 好友id NOT NULL, 联合主键

AllGroup表

段名称 字段类型 字段说明 约束
id INT 组id PRIMARY KEY, AUTO_INCREMENT
groupname VARCHAR(50) 组名称 NOT NULL
groupdesc VARCHAR(200) 组功能描述 DEFAULT ''

GroupUser表

字段名称 字段类型 字段说明 约束
groupid INT 组id PRIMARY KEY
userid INT 组员id NOT NULL
grouprole ENUM('creator', 'normal') 组内角色 DEFAULT 'normal'

OfflineMessage表

字段名称 字段类型 字段说明 约束
userid INT 用户id PRIMARY KEY
message VARCHAR(500) 离线消息(存储Json字符串) NOT NULL

数据库配置信息(没有具体实现)

复制代码
// 数据库配置信息
static string server = "127.0.0.1";
static string user = "root";
static string password = "123456";
static string dbname = "chat";

// 数据库操作类
class MySQL
{
public:
    // 初始化数据库连接
    MySQL()
    {
        _conn = mysql_init(nullptr);
    }
    // 释放数据库连接资源
    ~MySQL()
    {
        if (_conn != nullptr)
            mysql_close(_conn);
    }

    // 连接数据库
    bool connect()
    {
        MySQL *p = mysql_real_connect(_conn, server.c_str(), user.c_str(),
                                      password.c_str(), dbname.c_str(), 3306, nullptr, 0);
        if (p != nullptr)
        {
            mysql_query(_conn, "set names gbk");
        }
        return p;
    }

    // 更新操作
    bool update(string sql)
    {
        if (mysql_query(_conn, sql.c_str()))
        {
            LOG_INFO << __FILE__ << ":" << __LINE__ << ":" << sql << "更新失败!";
            return false;
        }
        return true;
    }
};

相关推荐
郝学胜-神的一滴8 小时前
Linux C++ 守护进程开发指南
linux·运维·服务器·开发语言·c++·程序人生·性能优化
爬山算法8 小时前
Netty(20)如何实现基于Netty的WebSocket服务器?
服务器·websocket·网络协议
张人玉8 小时前
c# Data相关类
数据库·oracle
云和数据.ChenGuang8 小时前
OpenEuler 系统中安装 MySQL
运维·数据库·mysql·adb·运维工程师·运维技术
wniuniu_8 小时前
ceph中的rbd的稀疏写入
java·服务器·数据库
牛奶咖啡138 小时前
Linux线上服务器掉电后无法启动故障的分析与修复实践——及其隐患解决(标准分区扩容、逻辑分区缩容与扩容)
服务器·系统掉电后无法启动故障排查解决·根分区满后重启无法进入系统·解决根分区满后故障分析解决·修复根分区满后系统故障·逻辑卷分区的缩容与扩容·标准分区的扩容
科技块儿8 小时前
如何使用IP数据云数据库接入流量监控?
数据库·网络协议·tcp/ip
为什么不问问神奇的海螺呢丶8 小时前
SFTP搭建-自动检测上传文件修改权限-rsync 自动同步到其他服务器
运维·服务器
沉醉不知处8 小时前
远程连接虚拟机,设置网络后,ip不变
服务器·网络·tcp/ip
咕噜签名-铁蛋8 小时前
云服务器高速网络架构设计与实践
服务器