Qt中数据编程主要分为以下两点:
1、利用qt提供类 访问数据库或者成为简单的数据库编程
2、数据库编程中引入model/view编程模型

qt中数据库编程的步骤:
1、加载数据库驱动
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
2、连接指定数据库并打开
db.setDatabaseName("/home/hua/students.db");
db.open()
3、组织sql语句,执行sql语句,内存数据《---》数据库
增加 删除 修改 查询
QSqlQuery query;
query.exec(sql语句);

query.prepare()
query.bindValue()

4、关闭连接
db.close()

案例1:通过程序给数据库中的表中增加一条记录,假设数据库名字为student,表格的名字是stu(姓名 年龄 成绩)。

实现代码如下:
1、在配置文件.pro中增加
QT += sql
2、代码如下:

#include "widget.h"
#include <QApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("/home/hua/students.db");

if(!db.open())
{
qDebug()<<"connect failed";
return;
}

QSqlQuery query;

query.prepare("insert into stu values('mike',23,78.5)");

db.close();

return a.exec();
}

案例2:通过界面输入学员信息(姓名 年龄 成绩),点击 插入按钮 将其添加到数据库的表格中,
点击查询按钮,则打印输入所有学员的信息。


代码如下:
main.cpp
#include "widget.h"
#include <QApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();

return a.exec();
}

widget.h文件内容如下:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QSqlDatabase>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
Q_OBJECT

public:
explicit Widget(QWidget *parent = 0);
~Widget();

private slots:
void on_btnInsert_clicked();

void on_btnSelect_clicked();

private:
Ui::Widget *ui;
QSqlDatabase db;
};

#endif // WIDGET_H

widget.cpp文件内容如下:

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QSqlQuery>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("/home/hua/students.db");

if(!db.open())
{
qDebug()<<"connect failed";
return;
}
}

Widget::~Widget()
{
db.close();
delete ui;
}

void Widget::on_btnInsert_clicked()
{
QSqlQuery query;

query.prepare("insert into stu values(?,?,?)");
query.bindValue(0,ui->lineName->text());
query.bindValue(1,ui->spinAge->value());
query.bindValue(2,ui->doubleSpinScore->value());

query.exec();

}

void Widget::on_btnSelect_clicked()
{
QSqlQuery query;
query.exec("select * from stu");

while(query.next())
{
QString name = query.value(0).toString();
int age = query.value(1).toInt();
float score = query.value(2).toFloat();

qDebug()<<name<<age<<score;
}
}

Qt数据库编程1的更多相关文章

  1. QT 数据库编程三

    //mainwindow.cpp #include "mainwindow.h" #include "logindlg.h" #include "sc ...

  2. Qt——数据库编程

    一.概述 Qt提供了一个类似JDBC的数据库接口,需要为每个可以连接的特定数据库提供驱动程序,可以通过 QStringList QSqlDatabase::drivers() 知道当前版本的Qt哪些驱 ...

  3. Qt数据库编程_基本

    QtSql模块提供了一个平台无关且数据库无关的访问SQL数据库的接口. Qt中的每个数据库连接用一个QSqlDatabase对象来表示:Qt使用不同driver来和各种不同数据库的API进行通讯. Q ...

  4. QT 数据库编程四

    //vmysql.cpp #include "vmysql.h" #include <QMessageBox> Vmysql::Vmysql() { mysql_ini ...

  5. QT 数据库编程二

    //logindlg.cpp #include "logindlg.h" #include <QGridLayout> #include <QHBoxLayout ...

  6. QT基于model/view数据库编程2

    Qt中数据编程主要分为以下两点:1.利用qt提供类 访问数据库或者成为简单的数据库编程2.数据库编程中引入model/view编程模型 基于model/view数据库编程: qt提供model类: Q ...

  7. c++学习书籍推荐《C++ GUI Qt 4编程(第2版)》下载

    下载地址:点我 百度云及其他网盘下载地址:点我 编辑推荐 <C++ GUI Qt 4编程(第2版)>讲授的大量Qt4编程原理和实践,都可以轻易将其应用于Qt4.4.Qt4.5及后续版本的Q ...

  8. (九)文档和视图,Invalidate,数据库编程

    一.文档视图结构 文档类(CDocument):存储加载(读写)数据视图类(CView):显示和修改数据 1)单文档 a)文档模板:把框架窗口.文档.视图关联在一起b)文档类(CDocument): ...

  9. 提高你的数据库编程效率:Microsoft CLR Via Sql Server

    你还在为数据库编程而抓狂吗?那些恶心的脚本拼接,低效的脚本调试的日子将会与我们越来越远啦.现在我们能用支持.NET的语言来开发数据库中的对象,如:存储过程,函数,触发器,集合函数已及复杂的类型.看到这 ...

随机推荐

  1. SqlServer系统表认识和操作

    地址:http://technet.microsoft.com/zh-cn/library/ms178551.aspx 一.sys.sysindexkeys 包含有关数据库的索引中的键或列的信息.(表 ...

  2. springBoot 中redis 注解缓存的使用

    1,首先在启动类上加上 @EnableCaching 这个注解 在查询类的controller,或service ,dao 中方法上加 @Cacheable 更新或修改方法上加 @CachePut 注 ...

  3. 【Spring Boot】集成Netty Socket.IO通讯框架

    服务端 @Configuration public class NettySocketConfig { private static final Logger logger = LoggerFacto ...

  4. 从零开始的全栈工程师——JS面向对象( 六大继承 )

    一.对象克隆 var obj = { name:'li', age:23 } var obj2 = obj; // 这不是对象克隆 只是把obj的内存地址给obj2 1.for in克隆(浅拷贝)  ...

  5. 【Android】8.0活动的生命周期(一)——理论知识、活动的启动方式

    1.0 Android是使用任务(Task)来管理活动的,活动就像栈一样堆放着在一起. 每个活动的生命周期最多可能会有四种状态: 1.1 运行状态 位于栈顶 1.2 暂停状态 不在栈顶但在界面上仍处于 ...

  6. MockPlus的使用方法简介

    不废话直接上图,不明白的留言.

  7. Shader之ShaderUI使用方法

    shader中的宏定义在material中Inspector中打开 Shader "Custom/Redify" { Properties{ _MainTex("Base ...

  8. gamemakerstudio:Sprite的原点

    对于某些类型的游戏,例如飞行射击游戏或者顶视角的2D游戏,通常会直接选取图片的中心做为原点.但对于<冰杖秘闻>这样的 2D ARPG 来说,会更多的从三维场景的角度来选择原点,即选择物品底 ...

  9. sqlserver 带输出参数的存储过程

    --创建存储过程create procedure proc_stu@sname varchar(20),@pwd varchar(50),@flag bit outputasif exists(sel ...

  10. Oracle分区表分批迁移

    遇到个分区表数据量超大的case,磁盘空间不够,所以考虑使用数据泵分批导数据,测试如下: source : oracle windows 32bit 10.2.0.1target  :  oracle ...