租服务器的网站,wordpress全部教程,企业策划书内容,网站服务器放置地怎么填写QT关于数据库的相关概念
QT将数据库分为三个层次#xff1a;
数据库驱动层#xff1a;QSqlDriver、QSqlDriverCreator、QSqlDriverCreatorBase、QSqlDriverPlugin
sql接口层#xff1a;QSqlDatabase、QSqlQuery、QSqlRecord、QSqlError
用户接口层#xff1a;提供一些模…QT关于数据库的相关概念
QT将数据库分为三个层次
数据库驱动层QSqlDriver、QSqlDriverCreator、QSqlDriverCreatorBase、QSqlDriverPlugin
sql接口层QSqlDatabase、QSqlQuery、QSqlRecord、QSqlError
用户接口层提供一些模型QSqlQueryModel、QSqlTableModel、QSqlRelationalTableModel
实现数据库操作的相关方法
添加数据库
[static] QSqlDatabase QSqlDatabase::addDatabase(QSqlDriver *driver, const QString connectionName QLatin1String(defaultConnection))
QSQLITE SQLite version 3 or above
设置数据库名称
void QSqlDatabase::setDatabaseName(const QString name)
包含数据库
bool QSqlDatabase::contains(const QString connectionName QLatin1String(defaultConnection))
打开数据库
bool QSqlDriver::open(const QString db)
关闭数据库
void QSqlDatabase::close()
错误信息
QSqlError QSqlDatabase::lastError()
sql语句执行构造一个QSqlQuery类对象调用其成员函数exec执行sql语句
bool QSqlQuery::exec(const QString query)
遍历查询结果的函数
bool QSqlQuery::next()
通过数据库实现学生管理系统
功能界面 主要功能代码
#include widget.h
#include ui_widget.hWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui-setupUi(this);//判断数据库对象是否包含了自己使用的数据库例如Student.dbif(!db.contains(Student,db)){//添加一个数据库//函数原型static QSqlDatabase addDatabase(const QString type);//参数数据库版本//返回值添加的数据库db QSqlDatabase::addDatabase(QSQLITE); //表示使用的是sqlite3版本的数据库//给数据库命名db.setDatabaseName(Student.db);}//打开数据库if(!db.open()){QMessageBox::information(this, 提示, 数据库打开失败);return;}//代码执行到这说明数据库创建并打开完毕就可以创建数据表了//创建数据表需要使用sql语句需要使用QsqlQuery类对象来完成//准备sql语句QString sql create table if not exists myTable( //创建表的sql语句id integer primary key autoincrement, //id主键允许自增numb integer, //学号name varchar(10), //姓名score integer, //分数sex varchar(4)); //性别//定义语句执行者QSqlQuery query;//使用query执行sql语句if(!query.exec(sql)){QMessageBox::information(this, 失败, 创建表失败);}else{QMessageBox::information(this, 成功, 创建表成功);}
}Widget::~Widget()
{delete ui;
}//录入按钮对应的槽函数
void Widget::on_pushButton_clicked()
{//获取ui界面中要存入数据库中的数据int numb_ui ui-lineEdit-text().toInt(); //获取UI界面的学号QString name_ui ui-lineEdit_2-text(); //获取UI界面的姓名int score_ui ui-lineEdit_3-text().toInt(); //获取UI界面的成绩QString sex_ui ui-lineEdit_4-text(); //获取UI界面的性别if(numb_ui 0 || name_ui.isEmpty() || score_ui 0 || sex_ui.isEmpty()){QMessageBox::information(this, 提示, 请将信息填写完整);return;}//准备sql语句QString sql QString(insert into myTable(numb, name, score, sex) values (%1, %2, %3, %4)).arg(numb_ui).arg(name_ui).arg(score_ui).arg(sex_ui);//定义语句执行者QSqlQuery query;if(!query.exec(sql)){QMessageBox::information(this, 失败, 录入数据失败);}else{QMessageBox::information(this, 成功, 录入数据成功);}//清除ui-lineEdit-clear();ui-lineEdit_2-clear();ui-lineEdit_3-clear();ui-lineEdit_4-clear();}//展示按钮对应的槽函数
void Widget::on_pushButton_2_clicked()
{//准备sql语句QString sql select * from myTable;//定义语句执行者QSqlQuery query;if(!query.exec(sql)){QMessageBox::information(this, 失败, 没有找到数据);return;}//将查找到的所有结果都放到query对象中//可以通过next函数不断遍历查询结果int i 0; //记录行号while(query.next()){//遍历的是任意一组记录query.record//要找到每条记录中的每个数据使用value(i)//将数据库中的表格战术到UI界面//ui-tableWidget-setItem()//query.record().value()for(int j0; jquery.record().count()-1; j){ui-tableWidget-setItem(i, j, new QTableWidgetItem(query.record().value(j1).toString()));}i;}
}