• 6249阅读
  • 3回复

QT+MS SQL 2000 大家帮着看看~谢谢~ [复制链接]

上一主题 下一主题
离线ff007bit
 
只看楼主 倒序阅读 楼主  发表于: 2011-01-06
我最近才学QT,要编一个系统,要求用到MS SQL 2000数据库,系统开始部分要有一个登录对话框,输入用户名和密码,然后从数据中查找匹配项,存在的话才允许进入系统.
代码如下:登录按钮
void LoginDlg::on_pushButton_Login_clicked()
[pre]{[/pre][pre]    QMessageBox Box;[/pre][pre]    QSqlTableModel query;         [/pre][pre]    QString sql;[/pre][pre]    /*设置数据库连接参数*/[/pre][pre]    QSqlDatabase db=QSqlDatabase::addDatabase("QODBC");[/pre][pre]    db.setHostName("BFS");    //这部分我填不填都可以open()成功[/pre][pre]    db.setDatabaseName("assets");[/pre][pre]    db.setUserName("hp");[/pre][pre]    db.setPassword("");[/pre][pre]    /*连接数据库*/[pre]    if( !db.open() )[/pre][pre]    {[/pre][pre]        Box.setText(tr("Connect Sql Failed!!!"));[/pre][pre]        Box.exec();[/pre][pre]        return;[/pre][pre]    }  //每次都能成功连接[/pre][pre]    /*查询数据库*/[/pre][pre]//在QString里,我没找到类似于format的函数,我自己把他们组合成QString了[/pre][pre]//lineEdit_User和lineEdit_Password是两个编辑框.[/pre][pre]    sql=tr("user=")+ui->lineEdit_User->text().trimmed()+tr(" AND password=")+ui->lineEdit_Password->text().trimmed();[/pre][pre]    query.setTable(tr("UserInfoTable"));[/pre][pre]    query.setFilter(sql);[/pre][pre]    query.select();[/pre][pre][/pre][pre]    /*分析查询记录*/[/pre][pre]    if( !query.rowCount()>0 )   [/pre][pre]    {[/pre][pre]        //每次查询都执行这部分.没有查到任何内容!!!![/pre][pre]        //用户名密码不正确的操作[/pre][pre]        Box.setText(tr("sorry,wrong password!"));[/pre][pre]        Box.exec();[/pre][pre]        ui->lineEdit_Password->clear();[/pre][pre]        ui->lineEdit_Password->setFocus();[/pre][pre]        return;[/pre][pre]    }[/pre][pre]    else[/pre][pre]    {[/pre][pre]        //正确的[/pre][pre]        Box.setText(tr("welcome to the Assets System!"));[/pre][pre]        Box.exec();[/pre][pre]        accept();[/pre][pre]    }[/pre][pre]表的名字是User,数据库名字是BFS,数据源名为assets.表中两个量:user,password.对应值为,ff和123[/pre][pre][pre]不知道为什么,每次都是连接上,但是查询不到任何内容.[/pre][pre][pre]大家帮我看看哪写错了吗..还是别的问题...急~谢谢[/pre][/pre][/pre][/pre]
离线ff007bit
只看该作者 1楼 发表于: 2011-01-06
void LoginDlg::on_pushButton_Login_clicked()
{
QMessageBox Box;
QSqlTableModel query;
QString sql;
/*设置数据库连接参数*/
QSqlDatabase db=QSqlDatabase::addDatabase("QODBC");
db.setHostName("127.0.0.1");
db.setDatabaseName("assets");
db.setUserName("hp");
db.setPassword("");

/*判断输入是否为空*/
if( ui->lineEdit_User->text().isEmpty())
{
Box.setText("Please Enter User!");
Box.exec();
ui->lineEdit_User->setFocus();
return;
}
if( ui->lineEdit_Password->text().isEmpty() )
{
Box.setText("Please Enter Password!");
Box.exec();
ui->lineEdit_Password->setFocus();
return;
}

/*连接数据库*/
if( !db.open() )
{
Box.setText(tr("Connect Sql Failed!!!"));
Box.exec();
return;
}
/* QSqlQuery query;
query.exec("SELECT * FROM User") ;*/

/* if( query.next())
{
Box.setText(tr("right!"));
Box.exec();
}
else
{
Box.setText(tr("123"));
Box.exec();
}*/

/*查询数据库*/
sql=tr("user=")+ui->lineEdit_User->text().trimmed()+tr(" AND password=")+ui->lineEdit_Password->text().trimmed();
query.setTable(tr("UserInfoTable"));
query.setFilter(sql);
query.select();

/*分析查询记录*/
if( !query.rowCount()>0 )
{
Box.setText(tr("sorry,wrong password!"));
Box.exec();
ui->lineEdit_Password->clear();
ui->lineEdit_Password->setFocus();
return;
}
else
{
Box.setText(tr("welcome to the Assets System!"));
Box.exec();
accept();
}
}
离线ff007bit
只看该作者 2楼 发表于: 2011-01-06
我发错了,又发了个帖子~大家帮帮忙~
离线XChinux

只看该作者 3楼 发表于: 2011-01-06
连接MSSQL如果不想在ODBC管理器中设置数据源的话,可以直接写DSN。下面是我用的代码片段:
           *_db = QSqlDatabase::addDatabase("QODBC");
        
            _db->setDatabaseName(QString("DRIVER={%5};SERVER=%1;"
                    "DATABASE=%2;UID=%3;PWD=%4")
                .arg(_mapConfig["database/host"].toString())
                .arg(_mapConfig["database/dbname"].toString())
                .arg(_mapConfig["database/username"].toString())
                .arg(strDecode(_mapConfig["database/password"].toString()))
                .arg(SQL Server));


[ 此帖被XChinux在2011-01-06 22:53重新编辑 ]
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个