【发布时间】:2018-04-19 19:36:20
【问题描述】:
我正在尝试从用户那里获取一个输入(用户名)并在我的 sqlite 中搜索它以找到它的密码以进行恢复。
QString username = QInputDialog::getText(this, "Password Recovery", "please enter ur Username here:", QLineEdit::Normal,"myUsername", Q_NULLPTR, Qt::WindowFlags(), Qt::ImhNone);
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("/home/arian_press/Qt5.7.0/Projects/APQt_chat/apt.db");
if (db.open())
{
QSqlQuery query;
QString qstr="SELECT username,password,support_email FROM users WHERE username=\""+username+"\";" ;
}
if (query.exec(qstr))
{
QString password=query.value(1).toString();
QString pass = "ur password is:" + password;
Smtp *newMail = new Smtp("arian.press2015@gmail.com",query.value(2).toString()," Your Password",pass);
delete newMail;
QMessageBox messageBox;
messageBox.critical(0,"Error","ur credentials are wrong!");
messageBox.setFixedSize(500,200);
}
else
{
qDebug() << query.lastError().text();
}
db.close();
}
else
{
qDebug() << "Failed to connect to database.";
}
但是当我运行程序时,当我在终端中打开 SQLite 文件时,它不会返回任何内容。
**更新: 你不是我说的那个意思。问题是我不能在上面的代码中使用 \" 因为查询我需要: SELECT username,password,support_email FROM users WHERE username="myusername"
但是当我使用上面的代码时,它会查询 SELECT username,password,support_email FROM users WHERE username=\"myusername\" 所以我没有任何结果。所以现在我如何在 QString 中带上引号?
【问题讨论】:
-
抱歉,这段代码应该做什么?你打开一个数据库,然后你建立一个字符串?如果您不向数据库发送查询,您将无法获得任何信息。
-
如果你从来没有
return任何东西,你就不能“返回任何东西”......不要发布不完整的代码片段,对应该发生的事情有模糊的愿望,没有任何证据表明你试图使其发生!发布一个完整的、可编译的示例,并解释用户应该如何测试它。在准备的过程中,您可能会意识到自己错过了什么。