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

Qt 下数据库文件和tableModel怎么链接起来的

2013-11-05 
Qt 下数据库文件和tableModel如何链接起来的代码:QSqlDatabase db QSqlDatabase::addDatabase(QSQLITE

Qt 下数据库文件和tableModel如何链接起来的
代码:
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); // 建立数据库驱动
    db.setDatabaseName("db");  // 打开数据库文件 db
    if(!db.open())  // 如果打开失败,提示消息对话框
    {
        QMessageBox::critical(0, tr("Cannot open database"),
            tr("Unable to establish a database connection.\n"
               "This example needs SQLite support. Please read "
               "the Qt SQL driver documentation for information how "
               "to build it."), QMessageBox::Cancel);
        return;
    }

    db.close(); // 关闭数据库

    QSqlTableModel *model; // 建立一个TableModel类
        model = new QSqlTableModel();

    QStringList list = model->database().tables(); // 得到db数据库文件中"表"
    qDebug() << list.size(); // 显示所存在的"表"的个数
    for (int i = 0; i < list.size(); ++i) // 敬爱那个所有的"表"名称显示出来
        qDebug() << list.at(i).toLocal8Bit().constData() << endl;

    model->setTable("person"); // 选定一个"表"

    model->select(); // 


问题:
    我关闭了数据库文件(db.close())后,才新建了QSqlTableModel类,为什么通过
model->database().tables()可以取得该数据库文件中所有的"表"名?QSqlTableModel类是如何和数据库文件链接起来的? //
[解决办法]
这是因为QSqlTableModel构造中有个默认参数QSqlDatabase(),这个是全局默认的缺省数据库,就算你关闭了,会自动open()的。


[解决办法]
http://blog.csdn.net/rabinsong/article/details/8452946, 看看这篇文章,重载data,将QTreeView,改为QTableView

热点排行