Qt版本数据库操作

1 创建项目时选择sql模块

2 简易效果图如下

3 代码如下图所示

#include "SqliteDemo.h"

#include <QtSql/QSqlDatabase>

#include <QtSql/QSqlRecord>

#include <QtSql/QSqlQuery>

#include <QtSql/QSqlQueryModel>

#include "QTableView"

#include <QDebug>

#include <QMessageBox>

SqliteDemo::SqliteDemo(QWidget *parent)

: QMainWindow(parent)

{

ui.setupUi(this);

//检查数据库的连接是否存在

if (QSqlDatabase::contains("qt_sql_default_connection"))

{

db = QSqlDatabase::database("qt_sql_default_connection");

}

else

{

db = QSqlDatabase::addDatabase("QSQLITE");

}

db.setDatabaseName(QApplication::applicationDirPath() + "/config/" + "config.db");

if (!db.open())

{

QMessageBox::about(this, "database", "database open failed");

}

connect(ui.createBtn, SIGNAL(clicked()), this, SLOT(createTableSlot()));

connect(ui.insertBtn, SIGNAL(clicked()), this, SLOT(insertBtnSlot()));

connect(ui.deleteBtn, SIGNAL(clicked()), this, SLOT(deleteBtnSlot()));

connect(ui.updateBtn, SIGNAL(clicked()), this, SLOT(updateBtnSlot()));

connect(ui.queryBtn, SIGNAL(clicked()), this, SLOT(queryBtnSlot()));

model = new QSqlQueryModel;

view = new QTableView;

}

//构造函数

SqliteDemo::~SqliteDemo()

{

delete model;

delete view;

db.close();

}

//创建数据库表

void SqliteDemo::createTableSlot(void)

{

QSqlQuery sql_query(db);

QString sql = "create table pointInfo(id integer primary key autoincrement , name varchar(30),longitude double, latitude double, altitude double)";

sql_query.prepare(sql);

if (!sql_query.exec())

{

QMessageBox::about(this, "create table", "Failed to create table.");

}

else

{

qDebug() << "Table created ok!";

QMessageBox::information(this, "create table", "create table ok!");

}

}

//插入一条数据

void SqliteDemo::insertBtnSlot(void)

{

QSqlQuery sql_query(db);

QString sql = "insert into pointInfo values(?,?, ?, ?, ?)";

sql_query.prepare(sql);

//  sql_query.bindValue(0, 1);

sql_query.bindValue(1, "start");

sql_query.bindValue(2, 120.12233);

sql_query.bindValue(3, 45.12233);

sql_query.bindValue(4, 5000);

if (!sql_query.exec())

{

QMessageBox::about(this, "insert table", "Failed to insert pointInfo.");

}

else

{

QMessageBox::information(this, "insert", "insert ok!");

}

}

//删除一条数据,清空数据库中所有数据

void SqliteDemo::deleteBtnSlot(void)

{

QSqlQuery sql_query(db);

QString sql = "delete from pointInfo";

sql_query.prepare(sql);

if (!sql_query.exec())

{

QMessageBox::about(this, "delete", "delete Failed.");

}

else

{

//QMessageBox::information(this, "delete", tr("delete record all ok"));

QMessageBox::information(this, "delete", QStringLiteral("删除所有记录"));

}

}

//更新一条记录, 此处未进行任何更新

void SqliteDemo::updateBtnSlot(void)

{

if (view != NULL)

{

view->show();

}

}

//查询操作

void SqliteDemo::queryBtnSlot(void)

{

model->setQuery("SELECT * FROM pointInfo");

model->setHeaderData(0, Qt::Horizontal, QStringLiteral("id"));

model->setHeaderData(1, Qt::Horizontal, QStringLiteral("名称"));

model->setHeaderData(2, Qt::Horizontal, QStringLiteral("经度"));

model->setHeaderData(3, Qt::Horizontal, QStringLiteral("纬度"));

model->setHeaderData(4, Qt::Horizontal, QStringLiteral("高度"));

//需要考虑内存释放的问题

view->setColumnWidth(5, 20);

view->resize(800, 500);

view->setModel(model);

view->show();

qDebug() << " model:" << model;

qDebug() << " view:" << view;

}

08.QT中sqlite3数据库基本操作相关推荐

  1. Sqlite3 数据库基本操作

    Sqlite3 数据库基本操作 1.sqlite3命令 **2.sqlite3编程接口:** 3.事务:一个或多个更改数据库的扩展 4.like和glob子句: 5.limit 和 offset 6. ...

  2. QT之SQLITE3数据库

    目录 一.数据库简介 二.Linux下使用sqlite3 三.SQL语句 1.Create Table 2.Drop Table 3.Truncate Table 4.Insert Into 5.Se ...

  3. 最新QT从入门到实战完整版(08.qt中的坐标系-09 信号和槽-点击按钮关闭窗口_)

    最新QT从入门到实战完整版(08.qt中的坐标系-09 信号和槽-点击按钮关闭窗口_) 一.08.qt中的坐标系 二,09 信号和槽-点击按钮关闭窗口_ 来自 一.08.qt中的坐标系 二,09 信号 ...

  4. 创建数据库是列名无效咋办_linux中sqlite3数据库的移植和使用(入门篇)

    1.数据库的安装移植 准备工作: 打开虚拟机,连接share 下载数据库压缩包.不要解压 压缩包网盘地址: 链接:https://pan.baidu.com/s/1ifWV_dPK4l_tbr12I3 ...

  5. linux中sqlite3数据库的基础命令和使用方法

    一.关于sqlite的一些基础概念 sqlite是一种基于Linux的SQL数据库引擎,它体积小,快速,高可靠性,功能齐全,比目前流行的大多数数据库对数据的操作要快. 这篇笔记记录了一些sqlite3 ...

  6. iOS中SQLite3数据库修改字段名

    关于数据库的增.删.改.查等基本操作本文不去介绍,网上大把的详细教程,这里只介绍实际使用中的一种情况:数据库中修改字段名称. 在产品更迭的过程中我们有时候需要修改数据库表中已存在的字段名或字段类型,这 ...

  7. 27.Qt操作sqlite3数据库

    1 sqlite3操作编程 问题1 驱动无法加载 QSqlDatabase: QSQLITE driver not loaded 解决办法将Qt自带安装目录下的sql文件拷贝到可执行文件目录下. 2 ...

  8. python创建sqlite3数据库_Python之Sqlite3数据库基本操作

    在一些小的应用中,难免会用到数据库,Sqlite数据库以其小巧轻便,无需安装,移植性好著称,本文主要以一个简单的小例子,简述Python在Sqlite数据库方面的应用,仅供学习分享使用,如有不足之处, ...

  9. ios中SQLite3的基本操作

    本文转自:http://blog.csdn.net/eduora_meimei/article/details/24299133 iOS关于sqlite3操作 iPhone中支持通过sqlite3来访 ...

最新文章

  1. Python课堂:判定IP地址合法性的三种方法
  2. pandas(五) -- 文本处理
  3. 二十五、深入Java中的static静态修饰符
  4. 怎么写出一份令人惊叹的设计文档?
  5. MySQL关闭查询缓存(QC)的两种方法
  6. 基于arm下的Linux控制,基于ARMuCLinux的网络控制系统设计与实现
  7. RPC协议与Web Service
  8. animition动画的加入
  9. (79)Vivado创建约束的方法
  10. U盘的用法用途与维护
  11. android局部布局替换,android – 子片段替换父片段根布局
  12. 【技术贴】Please verify that the Microsoft Data Access
  13. 深度卷积神经网络的水稻穗瘟病检测方法
  14. python实现k core算法_python实现k-近邻算法
  15. 计算机右键管理快捷键,鼠标右键菜单管理
  16. python求直角三角形个数的公式_Python3 欧拉计划 问题71-75
  17. 【IDEA更改默认字体大小】
  18. 回忆做嵌入式软件的几年
  19. 【java多线程02】JAVA线程
  20. win7服务器只显示4g内存,安装win7 64位系统后8G内存只显示4G可用解决方法

热门文章

  1. faster-rcnn tensorflow windows demo运行
  2. html中实现回车或点击进入-----Mr.Zhang
  3. 解决python访问中突发requests.exceptions.ConnectionError:Max retries exceeded with url报错
  4. 解决centos sudo执行仍旧显示Permission denied
  5. 考研数学自整理,弥补知识漏洞(强化、冲刺)
  6. dijikstra 旅行商问题_第27期:基于旅行商问题(TSP)的配送网络优化—R实现
  7. centos 7 一键安装gitlab
  8. 我的github网址链接
  9. 简单的对象序列化协议(伪代码)
  10. Codeforces340B Maximal Area Quadrilateral