集群聊天服务器---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;
    }
};

相关推荐
考虑考虑11 小时前
数据库中的EXISTS
运维·数据库·后端
Wang's Blog11 小时前
Java框架快速入门: Spring Security+OAuth2之数据库和实体类的RBAC改造
java·数据库·spring
梦想平凡13 小时前
百游棋牌源代码开发搭建教程(十):隔离部署、备份恢复与双端验收
java·前端·javascript·数据库·源代码管理
一个有温度的技术博主13 小时前
Linux 核心命令速查指南:从文件操作到系统运维
linux·服务器
xcLeigh13 小时前
让大模型长出手脚,自己写SQL查数据库(Function Calling初探)
数据库·人工智能·sql·时序数据库·timechoai
yume_sibai14 小时前
06-Rust Web 开发实战(Axum 框架 + 数据库 + JWT 认证 + 中间件 + 部署)
前端·数据库·rust
Winner_hwx14 小时前
华为ICT大赛备赛复习1
服务器·网络·华为
AugustRed15 小时前
Neo4j 图数据库原理 + 应用场景简单介绍
数据库·neo4j
宗介波妞15 小时前
Wireshark 抓取 IEC104 报文:常见异常报文排查与标志位解读
服务器·网络·wireshark
Gl�ria15 小时前
Redis 高可用架构对比
数据库·redis