QT连接Sql Sever数据库
2015-06-10 22:38
369 查看
QT与Sql sever 2012的连接
源码链接:http://download.csdn.net/detail/zkpingguo/8740147
1.需要先想pro文件中添加如下行,表示加载模块:
11.按照字段查询
源码链接:http://download.csdn.net/detail/zkpingguo/8740147
1.需要先想pro文件中添加如下行,表示加载模块:
QT +=coreguisql
2.包含头文件
#include<QSqlDatabase>
#include<QSqlError>
#include<QMessageBox>
#include<QSqlQueryModel>
3.数据库的连接(这里先不设置用户名和密码)
voidOpenDatabase()
{
QSqlDatabasedb=QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName(QString("DRIVER={SQLSERVER};"
"SERVER=%1;"//服务器名称
"DATABASE=%2;"//数据库名
// "UID=%3;" //登录名
// "PWD=%4;" //密码
).arg("ZHAOPANPAN-PC")
.arg(QObject::tr("高考成绩")) //注意这里的操作
//.arg("zk")
//.arg("password")
);
if(!db.open())
{
QMessageBox::critical(0,qApp->tr("Cannotopendatabase"),
db.lastError().databaseText(),QMessageBox::Cancel);
}
}
4.当连接了数据库后,下一步就是查询操作,在界面上添加一个pushbutton和tableview,然后设置pushbutton的槽函数,如下
方法一:
voidWidget::on_BtnCheck_clicked()
{
QSqlQueryModel*model=newQSqlQueryModel;
model->setQuery(tr("select*frommember"));//这里直接设置SQL语句,忽略最后一个参数
ui->tableView->setModel(model);
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);//使得tableView不可编辑
ui->tableView->setAlternatingRowColors(true);
ui->tableView->resizeColumnsToContents(); //按照内容调整列大小
ui->tableView->verticalHeader()->hide(); //隐藏左侧行号
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);//按照行选择
ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);//按照行选择
introw_count=model->rowCount(); //设置行高
for(inti=0;i<row_count;i++)
{
ui->tableView->setRowHeight(i,20);
}
}
此时就可以查到数据了。
方法二:
在widget.h中声明变量:
QSqlTableModel*model;
然后在构造函数中添加如下代码
model=newQSqlTableModel(this);
model->setTable("member");//选择使用的数据表
model->select();//选择表中的所有数据
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
ui->tableView->setModel(model);
introw_count=model->rowCount(); //设置行高
for(inti=0;i<row_count;i++)
{
ui->tableView->setRowHeight(i,20);
}
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);//使得tableView不可编辑
ui->tableView->setAlternatingRowColors(true);
ui->tableView->resizeColumnsToContents(); //按照内容调整列大小
ui->tableView->verticalHeader()->hide(); //隐藏左侧行号
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);//按照行选择
ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);//按照行选择
}
5.提交数据库的修改
model->database().transaction();
if(model->submitAll()){
model->database().commit();
}
else{
model->database().rollback();
QMessageBox::information(this,tr("tableModel"),tr("数据库错误!"));
}
6.取消数据库的修改
model->revertAll();
7.插入操作(添加记录)
introwNum=model->rowCount();
intid=10;
model->insertRow(rowNum); //添加一行
model->setData(model->index(rowNum,0),id);
8.删除记录
intcurRow=ui->tableView->currentIndex().row();
model->removeRow(curRow);
intOK=QMessageBox::warning(this,tr("删除当前行!"),tr("你确定删除当前行吗?"),QMessageBox::Yes,QMessageBox::No);
if(OK==QMessageBox::No)
{
model->revertAll();
}
else
{
model->submitAll();
}
9.按照id升序
model->setSort(0,Qt::AscendingOrder); //id是第0列
model->select();
10.按照id降序
model->setSort(0,Qt::AscendingOrder); //id是第0列
model->select();
11.按照字段查询
QStringname=ui->lineEdit->text();
model->setFilter(QObject::tr("name='%1'").arg(name));
model->select();
相关文章推荐
- QT学习 第一章:基本对话框
- 使用Shiboken为C++和Qt库创建Python绑定
- Qt实现图片移动实例(图文教程)
- Qt for Android开发实例教程
- QModelIndex/Role/Model介紹<二>
- 基于PyQt5的快速开发框架QFramer
- ok6410开发板移植DirectFB手记
- 【笔记】给Qt内嵌一个Chrome吧
- 【算法】最短路径之A*搜索
- qt入门必备
- 在 Qt4 中使用 C++11
- Hello Word ~ v0.2.2 背单词软件发布 -- By WHYPRO
- ubuntu下opencv和qt的安装配置
- linux下opengl的安装(with qt)
- qt 学习小节
- QT的命名风格
- QT 中的sleep
- QT 串口的监控
- 在VS2010下配置QT和ITK+VTK
- QLibrary&QPluginLoader 和plugin(转)