加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

QT读写Sqlite数据库

发布时间:2020-12-12 23:34:35 所属栏目:百科 来源:网络整理
导读:QT读写Sqlite数据库 //.h /**************************************************************************** ** ** Date : 2010-05-08 ** Author : furtherchan ** If you have any questions,please contact me ** ***************************************

QT读写Sqlite数据库

//.h

/****************************************************************************
**
** Date : 2010-05-08
** Author : furtherchan

** If you have any questions,please contact me
**
****************************************************************************/

#ifndef SQLITEDB_H
#define SQLITEDB_H

#include <QObject>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlQueryModel>
#include <QMessageBox>
#include <QString>
#include <QStringList>

class SqliteDB : public QObject
{

public:
SqliteDB();
QStringList strListUser;
QStringList strListId;
QStringList strListName;

void connectDB();
void closeDB();
void getUserInfo( QString id );
void updateUserLogStat( QString id,QString stat );
int insertNewUser( QString id,QString password,QString name,QString ip,QString port);
void getUserAllOnline();
void updateUserIp(QString id,QString ip);


private:
QSqlDatabase db;

};

#endif // SQLITEDB_H

//.cpp

/****************************************************************************
**
** Date : 2010-05-08
** Author : furtherchan

** If you have any questions,please contact me
**
****************************************************************************/

#include "sqlitedb.h"

SqliteDB::SqliteDB()
{
}

void SqliteDB::connectDB()
{
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("chat.db");
if ( !db.open())
{
QMessageBox::critical(NULL,"Connect to db...","Connect failed.");
}
}

void SqliteDB::closeDB()
{
db.close();
}

void SqliteDB::getUserInfo(QString id)
{
this->connectDB();
QSqlQuery query;
strListUser.clear();

if (!(query.exec("SELECT id,password,name,logstat,ip FROM user")))
{
QMessageBox::critical(NULL,"exec","Exec failed.");
}

while (query.next())
{
if ( query.value(0).toString() == id )
{
strListUser.append(query.value(0).toString());
strListUser.append(query.value(1).toString());
strListUser.append(query.value(2).toString());
strListUser.append(query.value(3).toString());
strListUser.append(query.value(4).toString());
}
}
this->closeDB();
}

void SqliteDB::updateUserLogStat(QString id,QString stat)
{
this->connectDB();
QSqlQuery query;
strListUser.clear();
if(!(query.prepare("UPDATE user SET logstat = :stat WHERE id = :id")))
{
QMessageBox::critical(NULL,"prepare","Prepare failed.");
}
query.bindValue(":id",id);
query.bindValue(":stat",stat);
if(!query.exec())
{
QMessageBox::critical(NULL,"Exec failed.");
}
this->closeDB();
}

void SqliteDB::updateUserIp(QString id,QString ip)
{
this->connectDB();

QSqlQuery query;
strListUser.clear();

if(!(query.prepare("UPDATE user SET ip = :ip WHERE id = :id")))
{
QMessageBox::critical(NULL,"Prepare failed."+id);
}
query.bindValue(":id",id);
query.bindValue(":ip",ip);
if(!query.exec())
{
QMessageBox::critical(NULL,"Exec failed.");
}

this->closeDB();
}

void SqliteDB::getUserAllOnline()
{
this->connectDB();
QSqlQuery query;
strListId.clear();
strListName.clear();
if(!(query.prepare("SELECT id,name FROM user WHERE logstat = :logstat")))
{
QMessageBox::critical(NULL,"Prepare failed.");
}
query.bindValue(":logstat","1");
if(!query.exec())
{
QMessageBox::critical(NULL,"Exec failed.");
}
while (query.next())
{
strListId.append(query.value(0).toString());
strListName.append(query.value(1).toString());
}
this->closeDB();

}

int SqliteDB::insertNewUser( QString id,QString port)
{
this->connectDB();
QSqlQuery query;
if (!(query.exec("SELECT id FROM user")))
{
QMessageBox::critical(NULL,"Exec failed.");
return -1;
}
while (query.next())
{
if ( query.value(0).toString() == id )
{
return 0;
}
}
query.prepare("INSERT INTO user (id,ip,port,logstat)" "VALUES (:id,:password,:name,:ip,:port,:logstat)");
query.bindValue(":id",id);
query.bindValue(":password",password);
query.bindValue(":name",name);
query.bindValue(":ip",ip);
query.bindValue(":port",port);
query.bindValue(":logstat","0");
query.exec();

this->closeDB();

return 1;}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读