シンビアンアプリのデータベースとしてsqliteを使用しようとしていますが、テーブルを作成できません。ここでは、コードがあります:C++、Qt 4 Sqlite:テーブルを作成できません
bool DatabaseManager::createExpenseTable(){
if(QFile::exists(dbName)){
this->showDebugMsg("Database file exist");
}else{
this->showDebugMsg("Database file exist DOES NOT exist");
}
// Create table "person"
bool ret = false;
if (db.isOpen()){
this->showDebugMsg("Database open");
QSqlQuery query;
ret = query.exec("create table expense "
"(id int primary key, "
"item varchar(100)");
//"price double, "
//"date datetime)");
}else{
this->showDebugMsg("Database CLOSED");
}
if(ret){
this->showDebugMsg("Table created");
}else{
this->showDebugMsg("Table NOT created");
}
return ret;
}
私の知る限りデバッグメッセージから見ることができるように「データベース・ファイルが存在する」と「データベースのオープン」データベースが存在し、開かれています。
しかし、私はいつも「テーブルは作成されていません」というメッセージを受け取ります。あなたの誰が問題がどこにあるかを見ていますか?
これは終了しました。コメント部分の直前を見てください。そして、さて、もし彼らが近くにいなければ、コードはコンパイルされません。 – Segolas
引用符付きのSQLに括弧がありません! – hmn
@セゴラス:それは閉じていない。 hmnは正しいです。閉じた括弧を含むコードをコメントアウトしました。引用符を取り除いて文字列を合体すると、あなたが掲示したコードがこのクエリを実行することが分かります: 'create table expense(id int primary key、item varchar(100)'は最後の括弧を欠いています。コンパイラはあなたがSQLドライバに渡すものが正当なSQLかどうかを推測する方法がないため、 'kjrfhiherfhdfgvjhfgvjh'のクエリを使用します。つまり、SQLのことを知らないこともあります。 SQLドライバに。 –