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

相关推荐
NineData19 小时前
NineData智能数据管理平台新功能发布|2026年1-2月
数据库·sql·数据分析
IvorySQL20 小时前
双星闪耀温哥华:IvorySQL 社区两项议题入选 PGConf.dev 2026
数据库·postgresql·开源
ma_king1 天前
入门 java 和 数据库
java·数据库·后端
jiayou641 天前
KingbaseES 实战:审计追踪配置与运维实践
数据库
随风飘的云1 天前
mysql的innodb引擎对可重复读做了那些优化,可以避免幻读
mysql
NineData2 天前
NineData 迁移评估功能正式上线
数据库·dba
NineData2 天前
数据库迁移总踩坑?用 NineData 迁移评估,提前识别所有兼容性风险
数据库·程序员·云计算
赵渝强老师2 天前
【赵渝强老师】PostgreSQL中表的碎片
数据库·postgresql
全栈老石2 天前
拆解低代码引擎核心:元数据驱动的"万能表"架构
数据库·低代码
YuMiao2 天前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议