gpt4 book ai didi

c++ - 如何在 QTableView 中显示 SQLite 表

转载 作者:行者123 更新时间:2023-11-30 04:54:58 28 4
gpt4 key购买 nike

我正在尝试连接到本地数据库并在 QTableView 中显示一个表。我目前正在连接到我的数据库,但每当我尝试将查询附加到 QTableView 框时,我都会收到 QSqlError("", "Unable to find table projects", "")。当我在 SQLite 的数据库浏览器中运行 SELECT * FROM projects 时,会显示我在该表中的条目。这是我的 mainwindow.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "purchaseorder.h"
#include <QtSql>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
PurchaseOrder *newpo = new PurchaseOrder();

QSqlDatabase db;

bool openDB(){
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("projectmanager.db");

if(!db.open())
{
qDebug()<<"Error opening database" << db.lastError();
return false;
}else{
qDebug()<<"Connection Established.";
return true;
}
}

void closeDB(){
db.close();
//db.removeDatabase(QSqlDatabase::defaultConnection);
}

private slots:
void on_actionProject_2_triggered();

private:
Ui::MainWindow *ui;
PurchaseOrder purchaseorder;
};

#endif // MAINWINDOW_H

这是我的 mainwindow.cpp 的一个片段:

#include "mainwindow.h"
#include <QDebug>
#include <QSqlQueryModel>
#include <QtSql>

void MainWindow::on_actionProject_2_triggered() // Load PROJECT table
{
QSqlTableModel* modal = new QSqlTableModel();
MainWindow conn;

conn.openDB();

modal->setTable("projects");
modal->select();
ui->tableView->setModel(modal);
qDebug()<<modal->lastError();

conn.close();
}

我相信一切都在进行中。 modal->setTable("projects");我也有我的 projectmanager.db 文件存储在 /db/projectmanager.db 但是当我把它放在我的数据库路径中时它没有连接但它会按照我的方式连接有它?感谢您的帮助,我们将不胜感激。

说明。项目数:

CREATE TABLE `projects` ( `project_id` INTEGER PRIMARY KEY AUTOINCREMENT,   
`project_name` TEXT,
`client` INTEGER,
`lead_employee` INTEGER,
`description` TEXT,
`start_date` TEXT,
`deadline` TEXT,
`status` INTEGER )

最佳答案

在创建模型之前必须先打开连接,另一方面又没有必要再创建一个MainWindow,所以解决方法是:

void MainWindow::on_actionProject_2_triggered()
{
openDB();
QSqlTableModel *modal = new QSqlTableModel;
modal->setTable("projects");
modal->select();
ui->tableView->setModel(modal);
closeDB();
}

关于c++ - 如何在 QTableView 中显示 SQLite 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53331018/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com