QT 数据库 控件

summer_b 宁波财经学院 2017-12-05 01:53:53
代码:
void luying::on_pushButton_8_clicked()//读数据
{
QSqlQueryModel *model=new QSqlQueryModel;
QSqlDatabase db = QSqlDatabase::database("connection1");
model->setQuery("select * from music",db);
model->setHeaderData(0,Qt::Horizontal,tr("sing")); // 列号加名称
model->setHeaderData(1,Qt::Horizontal,tr("myself"));
model->setHeaderData(2,Qt::Horizontal,QObject::tr("editer"));
ui->tableView->setModel(model);//tableview显示数据
}
void luying::on_pushButton_2_clicked()//读写数据
{
model1= new QSqlTableModel(this); //可以在tableview修改的代码
model1->setTable("music");
model1->setEditStrategy(QSqlTableModel::OnManualSubmit);
model1->select(); //选取整个表的所有行
ui->tableView->setModel(model1);
}
问题:
我把数据库里面数据显示在tableview里面,读的模式可以显示,但是读写的模式显示的是空。不知道为什么,哪个大神能帮我看看吗?
...全文
276 6 点赞 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
parkseyoung 2017-12-06
我没用控件直接用的Qt自带库函数
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
调用代码如下
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "MyAccessDB");
    const QString strName(QString("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access};DBQ=%1;Uid=%2;Pwd=%3")
                          .arg(strDBName)
                          .arg(strUser)
                          .arg(strPwd));

    db.setDatabaseName(strName);

    if (!db.isValid())
    {
        return false;
    }

    if (db.isOpen())
    {
        return true;
    }

    if (db.open())
    {
//do something
        return true;
    }
    else
    {
        qDebug() << db.lastError().text();
        return false;
    }
  • 打赏
  • 举报
回复
Liuzwang 2017-12-05

你看看这个构造函数,要指定数据库的。你自学看看你的读取的代码,有设置数据库。
但是你编辑的构造函数,只是指定了父类,没指定数据库啊。
你说的指定music,这是一个表。没指定数据库,怎么找得到这个表。
数据库包含很多数据表,你得理解数据库和数据表的区别。
具体代码的话,真不愿写,你看看能不能网上找到吧。
  • 打赏
  • 举报
回复
张小飞WPS 2017-12-05
引用 2 楼 summer_b 的回复:
[quote=引用 1 楼 Liuzwang 的回复:] 感觉是你忘记指定数据库了,你的读取模式有指定数据库,写模式没指定。
可是我在写的模式上 model1->setTable("music");这个不是指定了吗? QSqlDatabase db = QSqlDatabase::database("connection1"); model->setQuery("select * from music",db); 在 QSqlTableModel下要怎么使用啊?[/quote] 我记得model有个flag函数要重新写一下。
  • 打赏
  • 举报
回复
summer_b 2017-12-05
引用 1 楼 Liuzwang 的回复:
感觉是你忘记指定数据库了,你的读取模式有指定数据库,写模式没指定。
可是我在写的模式上 model1->setTable("music");这个不是指定了吗? QSqlDatabase db = QSqlDatabase::database("connection1"); model->setQuery("select * from music",db); 在 QSqlTableModel下要怎么使用啊?
  • 打赏
  • 举报
回复
Liuzwang 2017-12-05
感觉是你忘记指定数据库了,你的读取模式有指定数据库,写模式没指定。
  • 打赏
  • 举报
回复
相关推荐
发帖
Qt
加入

1.3w+

社区成员

Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
申请成为版主
帖子事件
创建了帖子
2017-12-05 01:53
社区公告
暂无公告