gpt4 book ai didi

database - 连接QT 5.3和postgresql

转载 作者:搜寻专家 更新时间:2023-10-30 23:07:46 25 4
gpt4 key购买 nike

我是 Qt 的新手(尽管我对 C/C++/Java/PHP 有一些经验)。我正在尝试将使用 PostgreSQL 数据库的旧程序迁移到 Qt GUI 中。我正在使用 PostgreSQL v2 并下载了最新的 QT 5.3.0(适用于 MinGW 32 位)。

我创建了一个名为 Anu 的示例小部件应用程序。 Anu.pro 文件如下所示:

QT       += sql
QT += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = Anu
TEMPLATE = app


SOURCES += main.cpp\
mainwindow.cpp

HEADERS += mainwindow.h

FORMS += mainwindow.ui

mainwindow.cpp 看起来像这样:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSqlDatabase>
#include <QtSql>
#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::on_pushButton_clicked()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
db.setHostName("localhost");
db.setDatabaseName("basicaccount");
db.setUserName("postgres");
db.setPassword("root");
db.setPort(5435);

bool ok = db.open();
if(ok != true)
{
QMessageBox::information(this,"Connection","Connection Failed!") ;
}
else
{
QMessageBox::information(this,"Connection","Connection OK!") ;

QSqlQueryModel model;
model.setQuery("select * from invoice ");

//ui->tableView->setModel(&model);
QMessageBox::information(this,"Information","This Message box is needed in order to see the rendered tableview!") ;

}
}

编译报错显示QSqlDatabase: QPSQL driver not loadedQSqlDatabase:可用的驱动程序:QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7。我尝试使用此处的信息构建插件:http://qt-project.org/doc/qt-5/sql-driver.html .我打开 Qt 的命令提示符并输入:

cd E:\Qt\Qt5.3.0\5.3\mingw482_32\plugins\sqldrivers\psql
qmake "INCLUDEPATH+=E:\Program Files\PostgreSQL\9.2\include" "LIBS+=E:\Program Files\PostgreSQL\9.2\lib\libpq.lib" psql.pro
nmake

问题是,我在 sqldrivers 文件夹中找不到 src 文件夹或 psql。我只在该文件夹中找到了 qsqlpsql.dll,每次我使用它时都说找不到目录。另外,“psql.pro”是什么意思?

非常感谢您的帮助。

最佳答案

最简单的方法,您需要以下内容;根据您的应用程序,64 位或 32 位如果 postgresql 是 64 位或 32 位都没有关系,因为 mingw 是为 32 位应用程序配置的。你需要 32 位 dll,如果您的 postgre 版本是 32 位,然后将以下 dll 从您的 postgresql 安装 bin 文件夹 libeay32.dll、libintl.dll、libpq.dll 和 ssleay32.dll 复制到您的 qt 版本 mingw bin 文件夹,现在您的程序应该可以工作

如果 postgresql 是 64 位的,那么包含的 dll 不能开箱即用,这些是 64 位的!

您仍然可以使用 64 位 postgresql 数据库,没问题,但您的应用程序需要 32 位 dll。有更复杂的方法可以做到这一点,但要启动您的应用程序,这被认为是最快的。

关于database - 连接QT 5.3和postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24300184/

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