Maintenant, je travaille sur le projet Qt et j'ai besoin de support MySQL. MySQL a été installé sur une machine virtuelle (Virtual Box) sur Ubuntu Server. Voici ce que je fais:Problème avec l'interaction 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();
}
J'obtiens l'erreur « Impossible de trouver la table my_table ». La table my_table est créée correctement. Voici la suite de 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 | |
+----------------+-----------+------+-----+---------+----------------+
Et enfin voici general_log de MySQL:
| 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 | |
Alors, Qu'est-ce que je fais mal?
Est-ce que "QSqlTableModel model" ne devrait pas être lié à hospital_db? –