首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

QT 提取数据库中的信息,该如何解决

2012-12-23 
QT 提取数据库中的信息刚刚学习QT,有个小问题就是怎么调出数据库中的,利用查询语句查询出几个信息,怎么显

QT 提取数据库中的信息
刚刚学习QT,有个小问题
就是怎么调出数据库中的,利用查询语句查询出几个信息,怎么显示到一个对话框。
比如说显示一个数据到line Edit控件
或者显示几个数据集合到一个什么控件?
不知道什么描述呀,我看网上的内容都是怎么连接数据库的。没有调用呀。
[最优解释]
如果你只想要某个查询结果,那么你可以通过连接数据库,然后查询得到结果,再调用某个空间的显示方法将结果显示出来。
例子:
         QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
        db.setDatabaseName(数据库名);
        if (!db.open()) {
            return false;
        }
        QSqlQuery query;
        query.exec("select * from 表名");
        QSqlRecord rec = query.record();
        while (query.next())
        {
通过遍历查询到的结果找到自己想要的,然后可以将此值传递给指定的控件,并将其显示。
        }
不知道是不是你想要的。
除此之外还可以通过model/view模型将数据库中的信息全部显示在控件(列表,表格)中。
[其他解释]
我自己的一段代码,用的sqlite数据库,就是一文件。
static bool createDbConnection()
{

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");   
    db.setDatabaseName("D:/SqliteDatabase/syspara");
    if (!db.open()) {
        QMessageBox::critical(0, qApp->tr("Cannot open database"),
            qApp->tr("Unable to establish a database connection.\n"
                     "This example needs QSQLITE support. Please read "
                     "the Qt SQL driver documentation for information how "
                     "to build it.\n\n"
                     "Click Cancel to exit."), QMessageBox::Cancel);
        return false;
    }
    return true;
}

上段代码可在程序初始化的时候调用,主要是连接数据库,当然要先建立对应的sqlite数据库文件。

下段代码是查询:(比如点击了一个按钮)

void MainWindow::on_pBtnShowTable_clicked()
{
    // QDate date = ui->dateEdit->date();
    int intyear = ui->dateEdit->date().year();
    int intmonth =  ui->dateEdit->date().month();
    int intday = ui->dateEdit->date().day();
   // QString dateStr = ui->dateEdit->date().toString("yyyy-MM-dd");
    QSqlTableModel *model = new QSqlTableModel(this);
    model->setTable("failtb");
    model->setHeaderData(0,Qt::Horizontal,tr("年"));
    model->setHeaderData(1,Qt::Horizontal,tr("月"));
    model->setHeaderData(2,Qt::Horizontal,tr("日"));


    model->setHeaderData(3,Qt::Horizontal,tr("时间"));
    model->setHeaderData(4,Qt::Horizontal,tr("描述"));

    model->setFilter("year="+QString::number(intyear));//
    model->setFilter("month="+QString::number(intmonth));//
    model->setFilter("day="+QString::number(intday));//

    model->select();
    ui->tableView->setModel(model);  
    ui->tableView->resizeColumnsToContents();
}

自己琢磨一下。
[其他解释]
请问2楼,能不能给个qt3中的使用例子?
[其他解释]
qtsdk中的examples里完全有你的例子
[其他解释]

引用:
如果你只想要某个查询结果,那么你可以通过连接数据库,然后查询得到结果,再调用某个空间的显示方法将结果显示出来。
例子:
         QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
        db.setDatabaseName(数据库名);
        if (!db.open()) {
          ……
while(query.next())括号内能给个详细的例子吗?

热点排行