C++ Qt Programming - 51 - 57 - 数据库编程
1 这里用的ODBC,数据库连接参考上一课,但上一课没有db.close()?
2 how to make a query?
QSqlQuery qry; // query: 查询
if (qry.exec("select * from table")) {
while (qry.next()) { // 遍历每一行
qDebug() << qry.value(1).toString(); // 第一列的值
}
} else {
qDebug() << "error = " << db.lastError().text();
}
3 prepare and bindValue 插入数据:
// 注意冒号, 为什么不直接写,而用prepare和bindValue
QString sQuery = "INSERT INTO [test].[dbo].[people] ([FirstName], LastName]) VALUES(:first, :last)";
QSqlQuery qry;
qry.prepare(sQuery);
qry.bindValue(":first", "san");
qry.bindValue(":first", "zhang");
if (qry.exec()) {
qDebug() << "Record Inserted";
}
qDebug() << "Closing...";
db.close();
4 QSqlDatabase with DSN - 54课:
关系windows系统odbc的设置
5 QSqlQueryModel 显示表格
和之前课程的model/view课程差不多,先调用model的set数据的函数,在调用view的setmodel函数
model = new QSqlQueryModel(this);
model->setQuery("SELECT.....");
ui->tableView->setModel(model);
问题:不能编辑
6 QSqlTableModel(黑马用的这个)
// 表格内容可编辑
model = new QSqlTableModel(this);
model->setTable("People");
model->select();
qDebug() << model->lastError().text(); // 如果表格内容不显示,这里会打印
ui->tableView->setModel(model);
7 著名的QSqlRelationalTableModel
QSqlRelationalTableModel可以用来设置不同表格之间的relation
people表的ID = wages表的person,如下是代码的显示内容,主要是setRelation接口
model = new QSqlRelationalTableModel(this);
model->setTable("People");
model->setRelation(0, QSqlRelation("wages", "id", "salary")); //id column in people and the salary 应该连在一起
model->select();
ui->tableView->setModel(model);
model的数据是people,把它和wages表关联起来,输出关联之后的表
sql server中还有更简单的方式:在sql server的views中进行操作
分类:
qt
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义