2009-10-08 2 views
0

초보자가 여기 데이터베이스를 만드는 데 문제가 있습니다. 다음 코드는 정상적으로 컴파일되지만 데이터베이스가 생성되지 않으며 sqlite 파일을 찾을 수 없습니다.QT에서 데이터베이스 만들기

#include "makeDB.h" 
#include <iostream> 
#include <QString> 
#include <QtSql> 

void makeDB(QString dbName) { 
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); 
    db.setHostName("localHost"); 
    db.setDatabaseName(dbName); 
    db.setUserName("logger"); 
    db.setPassword("logger"); 
} 

#include <QtGui/QApplication> 
#include <QString> 
#include <QtSql> 
#include "mainwindow.h" 
#include "makeDB.h" 
#include "createTable.h" 
#include "ui_mainwindow.h" 


int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    MainWindow w; 
    w.show(); 

    makeDB("log1"); 

    createTable(); 

    return a.exec(); 
} 

여기서 내가 뭘 잘못하고 있니? 감사! Waynew 편집/메시지를 삭제

우리는 당신이하는 createTable() 무엇을 볼 수 없습니다

답변

3

, 당신은 전화 적이없는 코드는 QT 데이터베이스 및 SQL 호출의 대부분은 성공을 위해 bool 반환 db.open()lastError() 기능은 모두 거기에있다 QSqlDatabaseQSqlQuery 호출 적절한 전화 (예 : db.open()query.exec())가 false를 반환하는지 확인합니다.

bool makeDB(QString dbName) { 
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); 
    db.setHostName("localHost"); 
    db.setDatabaseName(dbName); 
    bool result = db.open(); 
    if (result) 
    { 
    //do more processing 
    } 
    else 
    { 
    qDebug() << db.lastError().text() 
    } 
    return result; 
} 

또한 내가 SqlLite 인증 this의 모든 종류를 지원하는지 생각하지 않는다 당신이 SqlLite의 제작자에서 확장을 라이센스하여 DB를 확보 할 수 있음을 나타내는 것으로 보인다. 당신이 실제로 원하는 컬럼에 따라

CREATE TABLE (x int, y varchar); 

:

실제 테이블 작성에 관해서는 다음과 같습니다이 실행되는 일부 SQL이 있어야한다.

This은 해당 문서입니다.