FTP文件管理项目 项目日报(四)

项目日报(四)

1.预期进度

1.网络连接
2.数据库单例类添加,数据库各功能代码测试
3.完成登录,注册发包解包

2.实际进度

1.网络连接
2.数据库单利类添加,数据库各功能代码测试

网络连接
//网络连接套接字
QTcpSocket *tcpclient;      
//网络连接操作
    tcpclient=new QTcpSocket(this);
    tcpclient->abort();     //取消已有的链接
    tcpclient->connectToHost("XXX.XXX.XXX.XXX",XXXX);  //目标IP地址和端口号   
单例类数据库的加入
/*********info_csdb.h**********/
class userinfo_csdb
{
public:
    static userinfo_csdb *getDatabase(const QString &filename);
    ~userinfo_csdb();

    void CloseCSDB();       //关闭数据库
    bool CreateTable();         //建表
    //增
 	void Insertuser(int id,int pwd,QString tel,int dir_id);		//新增用户
    //删
	void deluser(int id);		//删除用户
    //查
    void fuzzysearch(QString str);  //模糊查询
    //改
   bool cpwd(int user_id, int old_pwd, int new_pwd);		//修改用户密码

    QSqlDatabase mydatabase;
private:
    userinfo_csdb(const QString &filename);
    static userinfo_csdb *database;
};

/*********info_csdb.c**********/
userinfo_csdb::userinfo_csdb(const QString &filename)
{
    //创建数据库
    mydatabase = QSqlDatabase::addDatabase("QSQLITE");
    mydatabase.setDatabaseName(filename);

    if(mydatabase.open())
    {
        qDebug()<<"数据库打开成功!!";
    }
    else
    {
        qDebug()<<"数据库打开失败!!";
    }
}

userinfo_csdb * userinfo_csdb::getDatabase(const QString &filename)
{
    if(database == NULL)
    {
        database=new userinfo_csdb(filename);
    }
    return database;
}

//创建数据表
bool userinfo_csdb::CreateTable()
{
    QSqlQuery sql_query;        //此处只用了一个sql的容器来执行接下来的数据库指令
    QString sql = "create table if not exists UserMsg(id int primary key,pwd int,tel text,dir_id int)";
    sql_query.prepare(sql);
    sql_query.clear();

    //创建文件信息表(无创建结果判断)
    QString sql1="create table if not exists FileMsg(file_name text primary key,owner_id int,mode int,dir_id int,file_id int,share int)";
    sql_query.prepare(sql1);     //query容器准备执行语句
    sql_query.exec();       //执行sql语句
    sql_query.clear();      //清除容器中内容

    QString sql2="create table if not exists DirMsg(dir_id int primary key,dir_name text,grade int,owner_id int)";
    sql_query.prepare(sql2);
    sql_query.exec();
    sql_query.clear();

    QString sql3="insert into UserMsg values(100000,123456,'18039027069',1)";
    sql_query.prepare(sql3);
    sql_query.exec();
    sql_query.clear();
}

//插入用户
bool userinfo_csdb::Insertuser(int id, int pwd, QString tel, int dir_id)
{
    QSqlQuery sql_query;

    QString insert_sql = QString("insert into UserMsg values(?,?,?,?)");
    sql_query.prepare(insert_sql);
    sql_query.addBindValue(id);
    sql_query.addBindValue(pwd);
    sql_query.addBindValue(tel);
    sql_query.addBindValue(dir_id);
    if(sql_query.exec())
    {
        qDebug()<<"inserted success!";
        sql_query.clear();
        return 1;
    }
    else
    {
        qDebug()<<sql_query.lastError();
        sql_query.clear();
        return 0;
    }
}

//删除用户
bool userinfo_csdb::deluser(int id)
{
    QSqlQuery sql_query;

    QString insert_sql = QString("delete from UserMsg where id = %1").arg(id);
    sql_query.prepare(insert_sql);
    if(sql_query.exec())
    {
        qDebug()<<"delete success!";
        sql_query.clear();
        return 1;
    }
    else
    {
        qDebug()<<sql_query.lastError();
        sql_query.clear();
        return 0;
    }
}

//修改密码
bool userinfo_csdb::cpwd(int id, int old_pwd, int new_pwd)
{
    QSqlQuery sql_query;
    QString changepwd_sql = QString("update UserMsg set pwd = %1 where id = %2 and pwd = %3").arg(new_pwd).arg(id).arg(old_pwd);
    sql_query.prepare(changepwd_sql);
    if(sql_query.exec())
    {
        qDebug()<<"change success!";
    }
    else
    {
        qDebug()<<sql_query.lastError();
    }
    sql_query.clear();
}
正则表达式控制输入
//正则表达式限制输入格式
    QRegExp exp("^[0-9]+$");
    QValidator *validator=new QRegExpValidator(exp,id_edit);
    id_edit->setValidator(validator);

    QRegExp exp1("^[0-9]+$");
    QValidator *validator1=new QRegExpValidator(exp1,pwd_edit);
    pwd_edit->setValidator(validator1);
不定长数据打包

还是有问题,之前试了下出错了,然后最近又忙,说实话就不想再搞不定长,想等他们做出来了,再问下。
在这里插入图片描述

遇到问题:
在查找数据表中用户名是否重名时,查看返回的个数会显示-1.这个问题之前遇到过,忘了怎么解决的,之后再查下。
解决:
打算使用回调函数查看返回具体内容。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值