2011-08-11 14 views
1

今、私はQtプロジェクトに取り組んでおり、MySQLサポートが必要です。 MySQLはUbuntu Serverの仮想マシン(Virtual Box)にインストールされていました。私がしていることは次のとおりです。qt + mysqlインタラクションの問題

int main(int argc, char** argv) 
{ 
    QApplication app(argc, argv); 
    QSqlDatabase hospital_db = QSqlDatabase::addDatabase("QMYSQL"); 
    hospital_db.setHostName("192.168.56.10"); 
    hospital_db.setDatabaseName("hospital_db"); 
    hospital_db.setUserName("usr1"); 
    hospital_db.setPassword("123"); 
    if(!hospital_db.open()) { 
     qDebug() << "\nFailed connect to MySQL"; 
    }; 

    QTableView *tView = new QTableView; 
    QSqlTableModel model; 

    model.setTable("my_table"); 
    model.setEditStrategy(QSqlTableModel::OnManualSubmit); 
    if (!model.select()) { 
     QMessageBox msgBox; 
     QString err(model.lastError().text()); 
     msgBox.setText(err); 
     msgBox.exec(); 
    } 
    model.setHeaderData(0, Qt::Horizontal, QObject::tr("ID")); 
    model.setHeaderData(1, Qt::Horizontal, QObject::tr("Name")); 
    model.setHeaderData(2, Qt::Horizontal, QObject::tr("Address")); 
    model.setHeaderData(3, Qt::Horizontal, QObject::tr("Phone")); 

    tView->setModel(&model); 
    tView->show(); 

    QSqlDatabase::removeDatabase("my_table"); 
    return app.exec(); 
} 

「テーブルmy_tableが見つかりません」というエラーが表示されます。テーブルmy_tableが正しく作成されました。ここSHOW FIELDS OF my_tableの結果は次のとおりです。

+----------------+-----------+------+-----+---------+----------------+ 
| Field   | Type  | Null | Key | Default | Extra   | 
+----------------+-----------+------+-----+---------+----------------+ 
| hosp_id  | int(11) | NO | PRI | NULL | auto_increment | 
| hosp_name  | char(100) | NO |  | NULL |    | 
| hosp_address | char(100) | NO |  | NULL |    | 
| hosp_ph_number | char(8) | NO |  | NULL |    | 
+----------------+-----------+------+-----+---------+----------------+ 

そして最後に、ここでは、MySQLからgeneral_logです:

| 2011-08-11 12:21:54 | usr1[usr1] @ [192.168.56.1] |  36 |   0 | Connect  | [email protected] on hospital_db | 
| 2011-08-11 12:21:54 | usr1[usr1] @ [192.168.56.1] |  36 |   0 | Init DB  | hospital_db       | 
| 2011-08-11 12:21:54 | usr1[usr1] @ [192.168.56.1] |  36 |   0 | Query  | SET NAMES utf8      | 
| 2011-08-11 12:21:54 | usr1[usr1] @ [192.168.56.1] |  36 |   0 | Field List | my_table       | 
| 2011-08-11 12:21:54 | usr1[usr1] @ [192.168.56.1] |  36 |   0 | Field List | my_table       | 
| 2011-08-11 12:21:54 | usr1[usr1] @ [192.168.56.1] |  36 |   0 | Query  | show index from my_table    | 
| 2011-08-11 12:22:01 | usr1[usr1] @ [192.168.56.1] |  36 |   0 | Quit   |          | 

だから、私は間違って何をしているのですか?

+0

「QSqlTableModelモデル」はhospital_dbにリンクされていませんか? –

答えて

0

まあ、私はサーバー側のアクセス許可にいくつかの問題があったようです。今はすべてが問題ありません。

+0

これは私が推測したものです。非ローカル接続にアクセス許可を与える必要がありましたか? –

+0

@ジョニー・ディー:あなたは絶対に正しいです)) – qutron

0

あなたは

model.setTable("mytable"); 

を行っているが、あなたのSQLに応じてテーブル名は "MY_TABLE" です。それらは違う !

+0

あなたはそうですが、コピーペーストエラーです。 – qutron