2015-01-08 4 views
7

Qt에서 SQLite 데이터베이스를 만들려고합니다. 여기 내 코드입니다 :Qt에서 SQLite 데이터베이스를 만드는 방법

QDir databasePath; 
QString path = databasePath.currentPath()+"myDb.db"; 
QSqlDatabase dbConnection = QSqlDatabase:addDatabase("QSQLITE"); 
db.setDatabaseName(path); 
db.open(); 

코드를 실행,하지만 난 내가 정의 경로에서 만든 데이터베이스를 찾을 수 없을 때 오류가 없습니다. 이것은 실제로 데이터베이스를 생성합니까 아니면 초기화를 수행합니까?

데이터베이스를 만들지 않으면 응용 프로그램 자체에서 데이터베이스를 어떻게 만듭니 까? (I 삽입에 대해서 이야기하고 있지 않다.)

또한 비어 있지 데이터베이스를 작성하고 당신이 먼저 dbConnection를 사용하는 코드에서 (변수의 정확한 이름을 사용하고 그 이후됩니다 쿼리 작성해야
+1

변수를 만드는 대신 경로를 하드 코딩하고 다시 테스트하십시오. 다른 문제와 달리 코드 또는 문자열 문제가 아닌지 확인하는 방법 중 하나입니다. – PaulMcKenzie

+0

@PaulMcKenzie :이 문제는 실제로 해결되었습니다. 위치의 아주 고마워요 – user3009135

+0

가장 일반적인 실수는 경로를 잘못 잡는 것입니다. –

답변

10

-db 예를 들면 다음과 같습니다.

QString path = "path"; 
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");//not dbConnection 
db.setDatabaseName(path); 
db.open(); 
QSqlQuery query; 
query.exec("create table person " 
      "(id integer primary key, " 
      "firstname varchar(20), " 
      "lastname varchar(30), " 
      "age integer)"); 
+1

@ Rania-Boy 물론이지, 그것은 단지 시험입니다. 르, 주요 아이디어는 OP가 dbCon을 사용하여 데이터베이스를 작성하지만 절대적으로 또 다른 db 변수로 작업하기 때문에 이들 이름이 동일해야한다고 말합니다. – Chernobyl

+0

아, 나는 다른 이름을 사용하고 있음을 알지 못했다. 미안하다. 그러나 다음과 같은 경로를 하드 코딩 한 후에 동일한 코드를 사용하는 데 문제가 있습니다.'QString path = "c : //Users//me//Document//workapce//myproject//databse.db"' 내 응용 프로그램이 충돌합니다. 디버깅 할 때 크래시로 끝내기 만하면됩니다. 무엇이 문제 일 수 있습니까? –

+0

사용자 이름과 암호로 db 파일에 연결할 수 있습니까? – SexyBeast

관련 문제