今、私は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 | |
だから、私は間違って何をしているのですか?
「QSqlTableModelモデル」はhospital_dbにリンクされていませんか? –