我想创建一个登录窗口,此窗口中有两个QlineEdits。我们必须在其中输入正确的帐户和密码,然后登录成功
member.db中有两组帐号和密码
第一:帐户:aaa,密码:000
第二:帐号:bbb,密码:111
以下是我的代码的一部分:Howerver当我选择帐户数据时,它无法捕获该值。
def buttonClicked(self):
model = QSqlQueryModel()
a=model.setQuery("SELECT Password FROM member WHERE Account = values(\'{0}')".format(self.AccountEdit))
if a==self.PasswordEdit.text():
QtGui.QMessageBox.information(self, 'message',"Congratulations !!!")
else:
QtGui.QMessageBox.warning(self, 'message',"Error !!!")
我认为错误在a=model.setQuery("SELECT Password FROM member WHERE Account = values(\'{0}')".format(self.AccountEdit))
此代码中。
因为我尝试print(a)
和return None
。
答案 0 :(得分:0)
这不是有效的SQL;你应该只使用WHERE Account = 'name'
。
此外,为防止SQL injection攻击,您应该使用参数;这只能通过使用单独的QSqlQuery
对象来实现:
query = QSqlQuery()
query.prepare("SELECT Password FROM member WHERE Account = ?")
query.bindValue(0, self.AccountEdit)
query.exec_()
model = QSqlQueryModel()
model.setQuery(query)