Qt视频直播软件--项目实战(Day3)

第三天项目日记

1、今日总结

今天继续写服务器
1)客户端要有一个登录的功能,所以服务器要连接数据库(这里用的时sqlite3)
2)实现了数据库的单例
3)在启动客户端时如果没有该数据库就创建该数据库,创建的数据库在程序运行路径
4)如果数据库中没有用户表就创建表

2、设计思路

因为数据库只有一个并且只有服务器会用,所以就直接写成单例模式,并且写自己的函数接口,供主窗口函数调用。

3、代码说明

在这里插入图片描述

dbhelper.h
#ifndef DBHELPER_H
#define DBHELPER_H

#include <QObject>
#include <QWidget>
#include <QtSql/QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>

class dbhelper
{
private:
    dbhelper(QString driver);
    static dbhelper* instance;
    QSqlDatabase *db;
//    QSqlQuery *query;
    QString driver;
public:
    static dbhelper *getIntance(QString);//传递驱动
    void setDatabaseName(QString); //传递路径
    void create_user_table();//创建表
    bool open();//打开
    void close();//关闭
};

#endif // DBHELPER_H

dbhelper.cpp
#include "dbhelper.h"
#include <QDebug>

dbhelper::dbhelper(QString driver)
{
    db = new QSqlDatabase;
    *db = QSqlDatabase::addDatabase(driver);
}

dbhelper *dbhelper::getIntance(QString driver)
{
    if(instance == NULL){
        instance = new dbhelper(driver);
        instance->driver = driver;
    }
    return instance;
}

void dbhelper::setDatabaseName(QString db_path)
{
    QString db_name = db_path + "/db.db";
    db->setDatabaseName(db_name);
}

void dbhelper::create_user_table()
{
    QSqlQuery query(*db);
    query.exec("CREATE TABLE IF NOT EXISTS user ("
               "id INTEGER PRIMARY KEY AUTOINCREMENT, "
               "name VARCHAR(50) NOT NULL, "
               "pswd VARCHAR(50) NOT NULL, "
               "state INTEGER DEFAULT(0))");
}

bool dbhelper::open()
{
    bool ret = db->open();
    return ret;
}

void dbhelper::close()
{
    db->close();
}


其他

添加服务器退出时的日志,只有开启时,再退出才会写关闭日志
在这里插入图片描述
写到析构函数里面
在这里插入图片描述
增加了一个事件显示label用来QTimer用来显示实时事件
在这里插入图片描述
在这里插入图片描述

数据库的初始化
在这里插入图片描述

在这里插入图片描述

4、项目文件

源代码链接.

5、效果展示

测试如下,在没有数据库的情况下,自动生成数据库数据表。
点击关闭之后会记录日志
当前时间也会一直显示
有一个小问题就是关闭mainwindow之后程序还没有退出,需要重写一下closeEvent即可
,代码中已经进行了修改。请添加图片描述

6、每日总结

学会使用的Qt库 QSqlDatabase QSqlQuery QSqlError

有志者,事竟成!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值