1、连接数据库
QSqlDatabase db;
//需要进行判断默认的连接名是否存在,
//如果不存在才使用addDatabase()方法,如果存在则使用database()方法
if(QSqlDatabase::contains("qt_sql_default_connection"))
db = QSqlDatabase::database("qt_sql_default_connection");
else
db = QSqlDatabase::addDatabase("QMYSQL");
//连接数据库
db.setHostName("127.0.0.1"); //数据库服务器IP
db.setUserName("root");//用户名
db.setPassword("000000");//密码
db.setDatabaseName("ycf");//使用的数据库
qDebug()<<"DatabaseConnect";
//打开数据库
if(!db.open())//数据库打开失败
{
QMessageBox::warning(this,"错误",db.lastError().text());
return;
}
2、执行sql语句
QSqlQuery query;
QString sql_temp = QString("update tempdata set time = '%1',ion = %2,temperature = %3, humidity = %4 where num = 1")
.arg(current_date)
.arg(ion)
.arg(temperature)
.arg(humidity);
//执行sql语句并判断执行结果
if(!query.exec(sql_temp))
{
QSqlError lastError = query.lastError();
qDebug()<<lastError.driverText()<<QString(QObject::tr("UpDate failed!"));
return false;
}
//遍历数据库:
QSqlQuery query;
//组包
QString sql = QString("select temperature,humidity from data where num like '%' ");
//执行SQL语句
query.exec(sql);
//获取内容
while(query.next())
{
QString temperature = query.value(0).toString();
QString humidity= query.value(1).toString();
qDebug()<<temperature<<endl;
qDebug()<<humidity<<endl;
}
//遍历数据库
QSqlQuery query;
query.exec("select * from users");
//指向第二条记录
query.seek(1);
//获取当前行的记录
QSqlRecord record = query.record();
//获取字段中记录的值
QString id = record.value("ID").toString();
QString name = record.value("name").toString();
qDebug()<<"name:"<<name;
3、使用数据模型
//新建数据查询模型
QSqlQueryModel *queryModel = new QSqlQueryModel(this);
//sql语句
queryModel->setQuery("select name from factory");
//将数据库数据读入下拉框
ui->comboBoxFactory->setModel(queryModel);
//设置表格模型
model = new QSqlTableModel(this);
//指定使用的表
model->setTable("brand");
//将model放入view中
ui->tableView->setModel(model);
//显示model里面的数据
model->select();
//设定视图第一行内容,不改变数据库
model->setHeaderData(0,Qt::Horizontal,"序号");
model->setHeaderData(1,Qt::Horizontal,"品牌");
model->setHeaderData(2,Qt::Horizontal,"型号");
model->setHeaderData(3,Qt::Horizontal,"价格");
model->setHeaderData(4,Qt::Horizontal,"总量");
model->setHeaderData(5,Qt::Horizontal,"售出");
model->setHeaderData(6,Qt::Horizontal,"剩余");
//设置model编辑模式为手动提交
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
4、相关头文件
#include <QSqlQuery>//执行sql语句相关
#include <QSqlDatabase>//连接数据库相关
#include <QSqlError>//数据库错误相关
#include <QSqlRecord>//数据库记录相关
#include <QSqlQueryModel>//数据查询模型