• 9174阅读
  • 4回复

【已解决】qt做登录框时遇到的数据库问题 [复制链接]

上一主题 下一主题
离线yzpdsg
 

只看楼主 倒序阅读 楼主  发表于: 2010-05-05
我做好了一个登陆框,可以正常登录,是在程序中判断是不是合法的用户名密码。现在想用数据库来替代,但是遇到了问题。

我想在第一次使用时程序应该能够初始化一个管理员的用户名和密码,等到第二次就不用再初始化了。因此构造函数为

loginDialog::loginDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::loginDialog)
{
    ui->setupUi(this);
    ui->passwordText->setEchoMode(QLineEdit::Password);
    ui->userNameText->setFocus();
    QWidget::setWindowIcon(QIcon("../pictures/icon/images.png"));
    QWidget::setWindowTitle(QString::fromLocal8Bit("请登录"));
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("../data/user.db");
    QSqlQuery query;
    query.exec(QObject::tr("create table users(name vchar,password vchar,passwdChanged int,loginTimes int)"));
    query.exec("select * from users");
    int passwdChanged = query.value(2).toInt();
    int loginTimes = query.value(3).toInt();
    if(passwdChanged != 1 && loginTimes != 1)
        query.exec(QObject::tr("insert into users values ('管理员','iloveDB',1,1)"));//初始化管理员密码及登陆属性
}


---------------------------------------------

运行时qt提示

Starting G:\QTProject\DBProject\debug\DBProject.exe...
QSqlQuery::exec: database not open
QSqlQuery::exec: database not open
QSqlQuery::value: not positioned on a valid record
QSqlQuery::value: not positioned on a valid record

不知我哪里有问题?
[ 此帖被yzpdsg在2010-05-22 08:51重新编辑 ]
离线午小夜

只看该作者 1楼 发表于: 2010-05-05
db.open()....
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线yzpdsg

只看该作者 2楼 发表于: 2010-05-05
厄。。。是我太大意了。但是运行后输入用户名密码仍然会有下面的提示且无法登陆(用户名密码不对):


Starting G:\QTProject\DBProject\debug\DBProject.exe...
QSqlQuery::value: not positioned on a valid record
QSqlQuery::value: not positioned on a valid record
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
离线banyibanyi

只看该作者 3楼 发表于: 2010-05-06
不知道你的数据库字符和程序字符是不是统一的
离线hehui

只看该作者 4楼 发表于: 2010-05-06
Debug下~

QSqlQuery::value: not positioned on a valid record  没有取到数据
很明显的你创建了数据库后里面是空的~
快速回复
限100 字节
 
上一个 下一个