【Qt+QLite】Qt实现注册登录功能

登录

1. 初始化 SQLite 数据库

  1. 添加 SQLite 数据库驱动程序
	QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
  • 驱动程序:提供一些函数或方法用于与数据库进行交互,例如执行 SQL 语句、访问数据库表格等;
  • API:数据库的应用编程接口,由一些函数或类组成,用于实现应用程序与数据库的交互。API 的使用方法和接口通常由驱动程序提供
  • QT中QSQLITE 模块提供了 SQLite 数据库的驱动程序和 API
  1. 打开 SQLite 数据库文件
      使用setDatabaseName() 函数指定 SQLite 数据库文件的名称和路径,并使用 open() 函数打开该数据库文件
db.setDatabaseName("user.db");
if(!db.open())
{
    qDebug()<<"open error";
}
  1. 使用 SQLite 数据库模块创建表格
    使用 SQL 语句创建一个名为 “users” 的表格
QString createsql=QString("CREATE TABLE IF NOT EXISTS users ("
                        "id INTEGER PRIMARY KEY AUTOINCREMENT,"
                        "username TEXT NOT NULL,"
                        "password TEXT NOT NULL"
                        ")");
    QSqlQuery query;
    if(!query.exec(createsql)){
        qDebug()<<"Failed to create table";
    }
    else{
        qDebug()<<"Table created successfully.";
    }
  • CREATE TABLE IF NOT EXISTS 是一种条件语句,它表示如果 “users” 表格不存在,就创建这个表格。
  • 表格包含了三个字段 “id”、“username” 和 “password”;
  • id :
    • “INTEGER PRIMARY KEY” 是 SQLite 中用于表示一个字段为主键的数据类型,它是整数类型。表示这个字段的值可以唯一地标识表中的每一条记录,它可以用来作为其他表格的外键,建立表格之间的关联
    • “AUTOINCREMENT”:表示自动递增的关键字,只能用于整数类型的主键字段。将在每次插入新记录时自动递增,从而为这个字段生成唯一的值
  • “username” 和 “password” 字段都是 TEXT 类型且不能为空。
  1. 关闭 SQLite 数据库文件
    使用 close() 函数关闭 SQLite 数据库文件
	db.close();

2. 获取查询

  1. 获取用户输入的用户名和密码
   QString username = ui->lineEdit_username->text();
   QString password = ui->lineEdit_password->text();
  1. 查询用户输入的用户名和密码是否在数据库中存在
    QString sql=QString("select * from user where username='%1' and password='%2'")
            .arg(username).arg(password);
  • select * from user where username=‘%1’ and password=‘%2’ :SQL 查询语句,用于查询符合条件的用户数据。其中 %1 和 %2 是占位符,等待被替换成实际的用户名和密码;
  • arg(username).arg(password) 是调用 QString::arg() 方法并传递两个参数,用于替换占位符。第一个参数是 username,用于替换 %1;第二个参数是 password,用于替换 %2。
  1. 执行并判断
    判断查询结果,如果没有找到记录则表示用户名或密码错误,打印登录失败信息并弹出一个提示框,否则表示登录成功,打印登录成功信息并跳转到主界面。
      QSqlQuery query(sql);  //创建 QSqlQuery 对象并执行 SQL 查询语句
          if(!query.next())
    {
        qDebug()<<"Login error";
        QMessageBox::information(this,"登录认证","登录失败,账户或者密码错误");

    }
    else
    {
        qDebug()<<"Login success";
        QMessageBox::information(this,"登录认证","登录成功");
        QWidget *w = new QWidget;
        w->show();
        this->close();
    }

注册

同第一部分:

  1. 先初始化 SQLite 数据库,
  2. 获取注册信息:id、两次密码
  3. 判断:
    if(password == surepass)
    {
        QString sql=QString("insert into user(username,password) values('%1','%2');")
                .arg(username).arg(password);
        QSqlQuery query;
        if(!query.exec(sql))
        {
            qDebug()<<"insert into error";
            QMessageBox::information(this,"注册认证","插入失败!");
        }
        else
        {
            qDebug()<<"insert into success";
            QMessageBox::information(this,"注册认证","插入成功!");
            MainWindow *w = new MainWindow;
            w->show();
            this->close();
        }
    }else{
        QMessageBox::information(this,"注册认证","两次密码输入不一致");
    }
  • QString sql=:定义了一个字符串变量 sql,用于存储 SQL 语句。

  • QString(“insert into user(username,password) values(‘%1’,‘%2’);”):定义了一个 SQL 语句,使用 insert into 命令将数据插入到 user 表格中的 username 和 password 列中。其中 %1 和 %2 是占位符,用于在后面的 arg() 方法中填入真实的值。

  • .arg(username).arg(password);:使用 arg() 方法将真实的用户名和密码填入占位符中,生成完整的 SQL 语句。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值