找回密码
 立即注册
收起左侧

数据库连接,QSqlTableModel,database,tableView

10
回复
11581
查看
[复制链接]
累计签到:14 天
连续签到:1 天
来源: 2013-7-8 16:11:28 显示全部楼层 |阅读模式
1Qter豆
    /*.cpp文件构造函数中*/
    QSqlDatabase db1 = QSqlDatabase::database("connection1");
    QSqlQuery query1(db1);
    qDebug()<<"connection1:";
    model = new QSqlTableModel(this);
    model->setTable("car");
    model->select();
    model->setEditStrategy(QSqlTableModel::OnFieldChange);//对所有模型的改变都会立即应用到数据库
    model->setHeaderData(0,Qt::Horizontal,QObject::tr("起始时间"));
    model->setHeaderData(1,Qt::Horizontal,QObject::tr("功能1"));
    model->setHeaderData(2,Qt::Horizontal,QObject::tr("功能2"));
    model->setHeaderData(3,Qt::Horizontal,QObject::tr("结束时间"));
    ui->tableView->setModel(model);
    ui->tableView->resizeColumnsToContents();
    ui->tableView->resizeRowsToContents();
求教,我在用一个数据库连接时是可以看到tableView中的表头,表格的,但是我用了两个数据库连接创建连个数据库表时,tableView中的表头,表格看不见了,但是这个表是存在的,我在用qDebug() 函数能够打印出表中的内容,请问是什么原因造成的呢?

最佳答案

查看完整内容

一个连接里面可以创建两个表的。 感觉是你的程序写的有点乱了,整理下思路再试试,应该没有问题的。
回复

使用道具 举报

累计签到:1564 天
连续签到:1 天
2013-7-8 16:11:29 显示全部楼层
zhulei 发表于 2013-7-9 14:05
但是当我将代码改为:
//QSqlDatabase db1 = QSqlDatabase::addDatabase("QSQLITE","connection1");
     ...

一个连接里面可以创建两个表的。

感觉是你的程序写的有点乱了,整理下思路再试试,应该没有问题的。
参与人数 1人气 +1 收起 理由
zhulei + 1 问题已解决

查看全部评分总评分 : 人气 +1

回复

使用道具 举报

累计签到:1564 天
连续签到:1 天
2013-7-9 09:37:28 显示全部楼层
你要用两个数据库连接创建两个表,然后同时显示到一个tableView中吗?

一个model只能对应一张表,一个view只能对应一个model!
回复

使用道具 举报

累计签到:14 天
连续签到:1 天
2013-7-9 11:01:42 显示全部楼层
yafeilinux 发表于 2013-7-9 09:37
你要用两个数据库连接创建两个表,然后同时显示到一个tableView中吗?

一个model只能对应一张表,一个view ...

我创建了两个表,没有同时显示在一个tableView中,另一张表我创建了 还没让他显示呢
回复

使用道具 举报

累计签到:14 天
连续签到:1 天
2013-7-9 13:42:26 显示全部楼层
zhulei 发表于 2013-7-9 11:01
我创建了两个表,没有同时显示在一个tableView中,另一张表我创建了 还没让他显示呢
...

我的思路:在一个UI中有两个tableView,分别对应两张表存放不同的内容,发现看不见表中内容,连添加表头都没有(如上面的代码中内容)。。。何解?
回复

使用道具 举报

累计签到:14 天
连续签到:1 天
2013-7-9 14:05:59 显示全部楼层
zhulei 发表于 2013-7-9 13:42
我的思路:在一个UI中有两个tableView,分别对应两张表存放不同的内容,发现看不见表中内容,连添加表头 ...

但是当我将代码改为:
//QSqlDatabase db1 = QSqlDatabase::addDatabase("QSQLITE","connection1");
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("my1.db");
   db.setUserName("database1");
    db.setPassword("123");
    if(!db.open())
    {
        QMessageBox::critical(0,QObject::tr("警告"),QObject::tr("数据库打开失败"),QMessageBox::Cancel);
         return false;
    }

    QSqlQuery query;
    query.exec("create table car(time1 varchar(20),function_1Name varchar(20),function_2Name varchar(20),"
               "time2 varchar(20))");

    return true;
在这个时候,表头和表格出现了,我想问下是怎么回事额
回复

使用道具 举报

累计签到:14 天
连续签到:1 天
2013-7-9 14:07:07 显示全部楼层
yafeilinux 发表于 2013-7-9 09:37
你要用两个数据库连接创建两个表,然后同时显示到一个tableView中吗?

一个model只能对应一张表,一个view ...

但是当我将代码改为:
//QSqlDatabase db1 = QSqlDatabase::addDatabase("QSQLITE","connection1");
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("my1.db");
   db.setUserName("database1");
    db.setPassword("123");
    if(!db.open())
    {
        QMessageBox::critical(0,QObject::tr("警告"),QObject::tr("数据库打开失败"),QMessageBox::Cancel);
         return false;
    }

    QSqlQuery query;
    query.exec("create table car(time1 varchar(20),function_1Name varchar(20),function_2Name varchar(20),"
               "time2 varchar(20))");

    return true;
在这个时候,表头和表格出现了,我想问下是怎么回事额
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-5-8 16:28:46 显示全部楼层
yafeilinux 发表于 2013-7-9 09:37
你要用两个数据库连接创建两个表,然后同时显示到一个tableView中吗?

一个model只能对应一张表,一个view ...

亚飞老大
我用tableview和QStandardItemModel进行数据库表的操作,现在遇到一个大难题,表的7 8列可以(其他不可以)被双击之后进行编辑,而且可以直接修改到数据库中。请问要怎么做。
做了一天了,一点进展都没有,好纠结,买了2本你的书也没有找到怎么解决啊、、、快救救我!
回复

使用道具 举报

累计签到:40 天
连续签到:1 天
2015-5-9 21:12:53 显示全部楼层
z55716368 发表于 2015-5-8 16:28
亚飞老大
我用tableview和QStandardItemModel进行数据库表的操作,现在遇到一个大难题,表的7 8列可以( ...

这个在论坛有                                       
回复

使用道具 举报

尚未签到

2015-6-25 14:23:10 显示全部楼层
因为你在创建连接的时候指定了连接名称,但是在使用QSqlQuery查询的时候没有把该连接对应的db传进去,因此QSqlQuery使用的是默认连接
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2017-3-28 09:29:50 显示全部楼层
我只有一个数据库 tableview里面只有列名,不现实数据这是为什么呀
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了