m.t*_*eri 0 c++ qt qsqltablemodel qsqldatabase
我需要通过从 QSqlTableModel 对象检索数据来填充 QTableView。我使用以下命令来连接到 sql server 数据库:
\n\nQSqlDatabase db = QSqlDatabase::addDatabase("QODBC");\nQString connectionTemplate = "DRIVER={SQL Native Client};SERVER=%1;DATABASE=%2;Uid=username;Pwd=password;Trusted_Connection=Yes;";\nQString connectionString = connectionTemplate.arg("localhost").arg("mydb");\ndb.setDatabaseName(connectionString);\nRun Code Online (Sandbox Code Playgroud)\n\n我通过 QSqlDatabase 类中的 isValid() 和 open() 方法验证数据库连接。我还可以正确地从数据库表中查询。\xd9\x8d 到目前为止一切都很好。但是当我使用以下命令时出现问题:
\n\nQSqlTableModel* model = new QSqlTableModel(parent,db);\nmodel->setTable("mytable");\nqDebug() << model->lastError().text(); // the error message is printed on consul.\nRun Code Online (Sandbox Code Playgroud)\n\nsetTable 方法不起作用并导致错误:无法找到表 \\"mytable\\"。
\n我找到了解决方案。我应该在 setDatabaseName 之后和创建 QSqlTableModel 之前打开数据库:
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
QString connectionTemplate = "DRIVER={SQL Native Client};SERVER=%1;DATABASE=%2;Uid=username;Pwd=password;Trusted_Connection=Yes;";
QString connectionString = connectionTemplate.arg("localhost").arg("mydb");
db.setDatabaseName(connectionString);
db.open(); // :)
QSqlTableModel* model = new QSqlTableModel(parent,db);
model->setTable("mytable");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1997 次 |
| 最近记录: |