0

Web ドメインがあり、既に mySql データベースがそこにありました。データベースから Qt アプリケーションに接続してデータを取得したいと考えています。これが私の試みと結果です。(ホスト名、データベース名、ユーザー名、およびパスワードは編集されたばかりです)。

  QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");

    db.setHostName("www.mydomain.com");
    db.setDatabaseName("myDatabase");
    db.setUserName("myName");
    db.setPassword("myPass");

    if(!db.open()){
        QSqlError err = db.lastError();
        qDebug() << err.text();
    }
    else {
        QSqlQuery qry;
        qDebug() << "Connected to SQL Database!";
        if (qry.exec("select * from dataTable;")){
            while(qry.next()){
                qDebug() << qry.value(1).toString();
            }
        }
        else {
            qDebug() << "ERROR QUERY";
        }


        qDebug() << "Closing...";
        db.close();
    }

    return a.exec();
}

接続されたが、クエリを実行したことを示しています。エラーを返します。さらに、無効なホスト名やユーザー名に変更しようとしましたが、それでも接続されました。

ここに画像の説明を入力

4

1 に答える 1

1

1) セミコロンなしで試してください。

「SQLite の場合、クエリ文字列には一度に 1 つのステートメントしか含めることができません。」( http://qt-project.org/doc/qt-4.8/qsqlquery.html#exec )

ただし、これは 1 つのステートメントであり、セミコロンのためにインタープリターが混乱する可能性があります。


2) 「exec() が呼び出されると、このクエリの最後のエラーがリセットされることに注意してください。」( http://qt-project.org/doc/qt-4.8/qsqlquery.html#exec )

これは準備されたステートメントではないため、exec() を避けて、最後のエラーに関する情報が利用できるようにしてください。

QSqlQuery qry("select * from dataTable");

if(qry.lastError()) {
  // ...
}

while(qry.next()) {
  qDebug() << qry.value(1).toString();
}
于 2014-01-08T16:44:09.127 に答える