QT 使用sqlite的方法 实现用户密码登陆实例
来源:互联网 发布:服务器域名 编辑:程序博客网 时间:2024/05/23 15:28
#include "formlogin.h"
#include "ui_formlogin.h"
#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QSqlTableModel>
FormLogin::FormLogin(QWidget *parent) :
QDialog(parent),
ui(new Ui::FormLogin)
{
ui->setupUi(this);
this->setWindowTitle(QString::fromLocal8Bit("登录"));
if(!openDb())
{
createDb(); //如果不存在数据库或无记录,则创建
openDb();
}
initForm();
connect(ui->comboBoxUser,SIGNAL(currentIndexChanged(int)),SLOT(addPassword()));
connect(ui->buttonBox, SIGNAL(accepted()),SLOT(accept()));
connect(ui->buttonBox, SIGNAL(rejected()),SLOT(reject()));
}
FormLogin::~FormLogin()
{
delete ui;
}
void FormLogin::changeEvent(QEvent *e)
{
QDialog::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
bool FormLogin::openDb()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("ioconf.db");
if(!db.open())
{
QMessageBox::warning(0, tr("Warning"), db.lastError().text());
return false;
}
QSqlQuery query(db);
if(!query.exec("select UserName,Password from users"))
{
db.close();
return false;
}
user_map.clear();
while(query.next())
{
QString UserName = query.value(0).toString();
QString Password = query.value(1).toString();
user_map.insert(UserName,Password);
}
db.close();
//判断数据库是否为空
if(user_map.isEmpty())
return false;
return true;
}
void FormLogin::createDb()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("ioconf.db");
if(db.open())
{
QString sqlstr="create table users(UserName text not null,Password text not null)";
QSqlQuery query(db);
query.exec(sqlstr);
query.prepare("insert into users (UserName, Password) values(:UserName, :Password)");
query.bindValue(":UserName", QString::fromLocal8Bit("系统管理员"));
query.bindValue(":Password", "system");
query.exec();
query.clear();
query.prepare("insert into users (UserName, Password) values(:UserName, :Password)");
query.bindValue(":UserName", QString::fromLocal8Bit("运维人员"));
query.bindValue(":Password", "admin");
query.exec();
query.clear();
}
}
void FormLogin::initForm()
{
QMap<QString,QString>::iterator it; //遍历map
for ( it = user_map.begin(); it != user_map.end(); ++it )
{
ui->comboBoxUser->insertItem(0,it.key());
}
ui->lineEditPassword->setText(user_map[QString::fromLocal8Bit("系统管理员")]);
}
void FormLogin::addPassword()
{
int indexNo = 0;
indexNo = ui->comboBoxUser->currentIndex();
ui->lineEditPassword->setText(user_map[ui->comboBoxUser->currentText()]);
}
#include "ui_formlogin.h"
#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QSqlTableModel>
FormLogin::FormLogin(QWidget *parent) :
QDialog(parent),
ui(new Ui::FormLogin)
{
ui->setupUi(this);
this->setWindowTitle(QString::fromLocal8Bit("登录"));
if(!openDb())
{
createDb(); //如果不存在数据库或无记录,则创建
openDb();
}
initForm();
connect(ui->comboBoxUser,SIGNAL(currentIndexChanged(int)),SLOT(addPassword()));
connect(ui->buttonBox, SIGNAL(accepted()),SLOT(accept()));
connect(ui->buttonBox, SIGNAL(rejected()),SLOT(reject()));
}
FormLogin::~FormLogin()
{
delete ui;
}
void FormLogin::changeEvent(QEvent *e)
{
QDialog::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
bool FormLogin::openDb()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("ioconf.db");
if(!db.open())
{
QMessageBox::warning(0, tr("Warning"), db.lastError().text());
return false;
}
QSqlQuery query(db);
if(!query.exec("select UserName,Password from users"))
{
db.close();
return false;
}
user_map.clear();
while(query.next())
{
QString UserName = query.value(0).toString();
QString Password = query.value(1).toString();
user_map.insert(UserName,Password);
}
db.close();
//判断数据库是否为空
if(user_map.isEmpty())
return false;
return true;
}
void FormLogin::createDb()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("ioconf.db");
if(db.open())
{
QString sqlstr="create table users(UserName text not null,Password text not null)";
QSqlQuery query(db);
query.exec(sqlstr);
query.prepare("insert into users (UserName, Password) values(:UserName, :Password)");
query.bindValue(":UserName", QString::fromLocal8Bit("系统管理员"));
query.bindValue(":Password", "system");
query.exec();
query.clear();
query.prepare("insert into users (UserName, Password) values(:UserName, :Password)");
query.bindValue(":UserName", QString::fromLocal8Bit("运维人员"));
query.bindValue(":Password", "admin");
query.exec();
query.clear();
}
}
void FormLogin::initForm()
{
QMap<QString,QString>::iterator it; //遍历map
for ( it = user_map.begin(); it != user_map.end(); ++it )
{
ui->comboBoxUser->insertItem(0,it.key());
}
ui->lineEditPassword->setText(user_map[QString::fromLocal8Bit("系统管理员")]);
}
void FormLogin::addPassword()
{
int indexNo = 0;
indexNo = ui->comboBoxUser->currentIndex();
ui->lineEditPassword->setText(user_map[ui->comboBoxUser->currentText()]);
}
阅读全文
1 0
- QT 使用sqlite的方法 实现用户密码登陆实例
- QT中SQLite使用实例
- 记住用户密码的登陆
- 【方法】Oracle用户密码含特殊字符时的登陆问题
- qt sqlite 的初步使用
- qt sqlite 的初步使用
- 使用线性布局实现简单登陆界面的实例
- 使用mysqladmin修改用户密码的正确方法!
- 使用mysqladmin修改用户密码的正确方法
- 使用mysqladmin修改用户密码的正确方法!
- Android SQLite的使用实例
- Android的SQLite使用实例
- Android SQLite的使用实例
- 不知道用户密码如何使用其他用户登陆
- 使用SQLite本地数据库实现注册登陆功能
- 在ASP.Net 中使用实现windows登陆的方法.
- ASP.Net 中使用实现windows登陆的方法
- 使用ViKey加密狗实现Windows登陆的方法
- JpGraph中文乱码解决方案
- json_encode编码 和json_decode解码
- Java通过redis实现接口ip访问频率限制
- DOS查看端口占用及杀掉进程命令
- Mybatis系列之入门
- QT 使用sqlite的方法 实现用户密码登陆实例
- 前端积累记录
- 路径(二):更好的安装软件的方法(Windows:Chocolatey,Mac:Homebrew) 作者:王皓 发布于:2015-01-17 17:09 更新于:2015-03-10 08:05 你
- 使用AsyncTask加载图片
- 微信开发学习总结(三)——开发微信公众号的最基本功能——普通消息的接收和回复
- Require.js
- IntelliJ IDEA 使用心得与常用快捷键
- yum被packagekit占用问题解决
- unity中的移动端优化小结