2014-06-19 2 views
1

저는 Ct (C/C++/Java/PHP에 대한 약간의 경험이 있지만) Qt의 초보자입니다. PostgreSQL 데이터베이스를 사용하는 이전 프로그램을 Qt GUI로 마이그레이션하려고합니다. 저는 PostgreSQL v2를 사용 중이며 최근 QT 5.3.0 (MinGW 32 비트 용)을 다운로드했습니다.QT 5.3과 postgresql을 연결하십시오

Anu라는 예제 위젯 응용 프로그램을 만들었습니다.

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은 다음과 같습니다 : :이 Anu.pro 파일은 다음과 같다 가능한 드라이버 : QPSQL 드라이버 QSqlDatabase를로드하지 : 컴파일에서 오류가 QSqlDatabase 보여줍니다

#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!") ; 

    } 
} 

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'의 의미는 무엇입니까?

도움을 주셔서 감사합니다.

답변

2

가장 쉬운 방법은 다음과 같습니다. 응용 프로그램에 따라 64 또는 32 비트 postgresql이 64 또는 32 비트이면 mingw가 32 비트 응용 프로그램 용으로 구성되므로 중요하지 않습니다. 당신은 32 비트 dll이 필요합니다. 당신의 postgre 버전이 32 비트라면 postgresql 설치 빈 폴더 libeay32.dll, libintl.dll, libpq.dll 및 ssleay32.dll에서 다음 dll 파일을 qt 버전으로 복사하십시오. mingw bin 폴더에서 실행하면 프로그램이 작동합니다.

postgresql이 64 비트이면 포함 된 dll 파일은 64 비트에서 작동하지 않습니다!

여전히 64 비트 postgresql DB를 사용할 수 있지만 문제는 없지만 응용 프로그램에는 32 비트 dll이 필요합니다. 더 복잡한 방법이 있지만 응용 프로그램을 시작하는 데 가장 빠른 방법입니다.