2017-04-22 4 views
0

私はプロジェクトディレクトリに確実に存在するデータベースを作成しました。DBBrowserとUbuntuターミナルを使用して開くことができます。彼らは両方のデータベースが「映画」テーブルが含まれていますが、C++での私のコードは、このようなテーブルが見つからなかったことを述べていることを示してQSqlDatabaseにテーブルが表示されません

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); 
db.setDatabaseName("TestDatabase.db"); 

if(!db.open()) 
{ 
    qDebug() << db.lastError(); 
    qFatal("Failed to connect"); 
} 

qDebug("Connected"); 

QSqlQuery query(db); 


if(!query.exec("INSERT INTO movies (TITLE,RELEASE,STUDIO,DIRECTOR) VALUES ('Batman v Superman' , 2016 , 'WB', 'ZackSnyder');")) 
{ 
    qDebug() << query.lastError(); 
} 
else { 
    qDebug("INSERTED!"); 
} 

私はあなたのコードをコピーした(と調整してきました

Connected 
QSqlError("1", "Unable to execute statement", "no such table: movies") 

答えて

2

あなたのソースコードと同じフォルダにデータベースがありますが、アプリケーションを実行してコンパイルすると、明らかにデータベースが存在しないリリース/デバッグフォルダに置かれます。

ここで、Qtが存在しない場合にデータベースを作成するため、Connectedというメッセージが表示されます。

フルパスとデータベース名を一度指定して試してください。期待どおりに動作するはずです。

+0

ありがとうございました!データベースファイルがデバッグフォルダに作成されています。 –

0

出力パス)とは

sqlite3 /tmp/TestDatabase.db SQLite version 3.14.0 2016-07-26 15:17:14 Enter ".help" for usage hints. sqlite> create table movies(TITLE text,RELEASE text,STUDIO text,DIRECTOR text); sqlite> .schema CREATE TABLE movies(TITLE text,RELEASE text,STUDIO text,DIRECTOR text);

のように作成したデータベース上でそれを実行し、それはそれはおそらく、どのようにこの テストしていることになる期待どおりに動作してバイナリをデータベースがある場所と同じ場所から実行していますか?おそらく.qrcを展開に使用していますか?

関連する問題