首页 > 解决方案 > 将 SQLite 数据库中的数据保存到变量中

问题描述

我正在尝试将数据库中的用户名保存到一个变量中以在另一个 QDialog 中使用,但是当我尝试在另一个对话框中使用它时该变量为空

qry.prepare("select nome from Users where email='"+user+"' and senha='"+password+"'");
 if(qry.exec()) {
   int count=0;
   while(qry.next()) {
    ui->label_2->setText(qry.value(0).toString());
     count++;
   }

   if (count == 1) {
     usuario = ui->label_2->text();
     ui->errologin->setText("");
     logado= true;
     this->hide();

   }

这就是我试图在另一个对话框中调用它的方式:

ui->label->setText(log.usuario);

这是头文件中的变量声明:

public:
  explicit login(QWidget *parent = nullptr);
  ~login();
  bool logado;
  QString usuario;

标签: c++databasesqliteqtqdialog

解决方案


有一件事你可以做得更好,而不是这样:

qry.prepare("select nome from Users where email='"+user+"' and senha='"+password+"'");

将其替换为:

qry.prepare("select nome from users where email=? and senha=?");
qry.bindValue(0, user);
qry.bindValue(1, password);

请不要构建连接字符串的查询。

除此之外,没有办法知道你的错误在哪里,因为你没有像@AlanBirtles 和@eyllanesc 所要求的那样提供一个最小的可重现的例子。我在您提供的代码中没有看到问题,它可能隐藏在您显示的代码中。

另一个建议:尝试将您的问题减少到最小的测试程序可能会帮助您自己找到问题。例如,如果您怀疑您对 QSqlQuery 类的使用,那么将您的查询放在控制台程序中,看看它是否返回正确的结果。如果它仍然无法正常工作,请在此处发布您的(完整)测试程序。


推荐阅读