qt mysql读写_QT读写Sqlite数据库

这是一个使用QT库操作SQLite数据库的C++代码示例,包括连接、关闭数据库、获取用户信息、更新用户登录状态和IP地址以及插入新用户的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QT读写Sqlite数据库

//.h

/****************************************************************************

**

** Date    : 2010-05-08

** Author  : furtherchan

** If you have any questions , please contact me

**

****************************************************************************/

#ifndef SQLITEDB_H

#define SQLITEDB_H

#include

#include

#include

#include

#include

#include

#include

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", "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", "Prepare failed."+id);

}

query.bindValue(":id",id);

query.bindValue(":ip",ip);

if(!query.exec())

{

QMessageBox::critical(NULL, "exec", "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", "Prepare failed.");

}

query.bindValue(":logstat","1");

if(!query.exec())

{

QMessageBox::critical(NULL, "exec", "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 password, QString name, QString ip, QString port)

{

this->connectDB();

QSqlQuery  query;

if (!(query.exec("SELECT id FROM user")))

{

QMessageBox::critical(NULL, "exec", "Exec failed.");

return -1;

}

while (query.next())

{

if ( query.value(0).toString() == id )

{

return 0;

}

}

query.prepare("INSERT INTO user (id, password, name, 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;}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值