|
1Qter豆
各位大神:
本人用qt creator+sqlserver 2000编程,使用tableview了控件,但该控件中无法显示需要的数据。通过调试,发现数据库已经建立了连接,并且已经读取了数据,但就是无法显示,不知道怎么回事?我的sql sever 2000中数据表和列名已经用英文表示了。
附上代码:
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this); QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); //下面例子连接到127.0.0.1上的sql server名为OJ的数据库上。 程序中指定此连接的名称为connection1 db = QSqlDatabase::addDatabase("QODBC", "connection1"); db.setHostName("127.0.0.1"); //如果dsn中已经含有SERVER,可以省略此句 db.setPort(1433); QString dsn = QString::fromLocal8Bit("DRIVER={SQL SERVER};SERVER=127.0.0.1;DATABASE=Qhis"); //如果已经设定DSN,可以写为QString::fromLocal8Bit("SQLSERVER_DSN") db.setDatabaseName(dsn); //即使dsn中已经设置了UID和PASSWD,仍然需要执行setUserName和setPassword的步骤 db.setUserName("sa"); db.setPassword(""); if(db.open()) { static QSqlQueryModel *model = new QSqlQueryModel(ui->tableView); model->setQuery(QString("select * from doctor")); model->setHeaderData(0,Qt::Horizontal,QObject::tr("name")); model->setHeaderData(1,Qt::Horizontal,QObject::tr("age")); model->setHeaderData(2,Qt::Horizontal,QObject::tr("**")); ui->tableView->setModel(model); ui->tableView->resizeColumnsToContents(); ui->tableView->resizeRowsToContents(); //db.close(); }}Widget::~Widget(){ delete ui;} |
|