QT读写Sqlite数据库
来源:互联网 发布:刘一龙 知乎 编辑:程序博客网 时间:2024/05/02 02:48
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", "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;
}
- QT读写Sqlite数据库
- Qt操作多个Sqlite数据库和文件读写
- 怎样在Qt下连接读写sqlite数据库
- Qt提升对SQLite数据库的读写速度
- Qt提升对SQLite数据库的读写速度
- android sqlite 数据库读写
- sqlite数据库,读写 sqlite3_exec
- 提高Qt SQLite读写性能
- Qt操作SQLite数据库
- Qt 与 Sqlite数据库
- QT 操作Sqlite数据库
- Qt 连接SQLITE数据库
- QT数据库--sqlite
- Qt数据库sqlite总结
- QT操作Sqlite数据库
- qt与SQLite数据库
- Qt-sqlite数据库实战
- Qt数据库sqlite总结
- QT中TCP/UDP通信数据的组织
- Windows下globus tookit(gt4)的安装与配置
- 运用FILE对文本文件进行指定读取、删除,指定位置添加一行操作类
- IT人应接受的好习惯和应拒绝的不良习惯总结
- 我们要挑战程序员35岁分界线
- QT读写Sqlite数据库
- 网络日志(2010.5.11)
- XEIM 配置程序源代码
- Jdom解析xml问题
- 程序员须知:怎么提高自己的编程水平?
- C# 获取文件的数字签名信息
- 感人的故事:老公啊,我们什么时候能结婚啊
- getchar、getch区别与用法
- 两个小工程进度