qtアプリケーションを使用してsqliteデータベースに接続する際に問題があります。 私は複数の場所でコードを再利用したいので、データベースを開いたり閉じたりする関数を持っているヘルパークラスDBManagerを持っています。qtを使用してSQLiteデータベースに接続
void CreateUser::on_pushButton_submit_clicked()
{
dbmanager.connOpen();
QString username = ui->lineEdit_username->text();
QString password = ui->lineEdit_password->text(); //Gets password text
QSqlQuery qry(dbmanager.mydb);
qry.prepare("INSERT INTO users (username,password) VALUES ('"+username+"', '"+password+"')");
if(qry.exec()){
}
else{
ui->statusbar->showMessage(qry.lastError().text());
}
dbmanager.connClose();
}
エラー:私は私のデータベースにアクセスしようとしているところ はここ
DBManager::DBManager()
{
}
void DBManager::connOpen()
{
path = QCoreApplication::applicationDirPath() + "/GameSuitedb.db";
mydb=QSqlDatabase::addDatabase("QSQLITE");
mydb.setDatabaseName(path);
void DBManager::connClose() /*Closes connection and commits changes to database*/
{
mydb.close();
mydb.removeDatabase(QSqlDatabase::defaultConnection);
}
注意私のデータベースがGameSuitedb命名されdbmanager.cppで、実行可能 の隣に位置しており、ここにあります上記のコードはQSqlQuery :: prepareが起動したときに私に与えます:データベースは開いていません。
デバッガで 'path'変数よりも検証しましたか?また、準備されたクエリを使用する方法についても読んでください。現在のコードには、SQLインジェクション攻撃の可能性があります。 – MrEricSir
qtのsqliteサポートは、データベースファイルがフォルダに存在しない場合、少なくとも新しいデータベースを作成しようとします。 – drescherjm