C++QT SqlLite数据库简单使用

简介: C++QT SqlLite数据库简单使用

前言

C++QT SqlLite数据库简单使用

一、数据库简单使用

语言:C++

框架:Qt

数据库:Sqllite

设计模式:单例


二、代码

//Database.h
#pragma once
#include <QObject>
#include <QSqlQuery>
#include <QDebug>
#include <QSqlError>
#include <QMutex>
#include <QDir>
#include <QCoreApplication>
#include <QDate>
#include <QDateTime>
struct InfoEquipPatient
{
  QString Hospital;
  QString Doctor;
  QString PatientId;
  QString PatientName;
  QString PatientSex;
  QString PatientAge;
  QString Disease;
  QString Location;
  QString Time;
  QString CodeEquip;
};
class Database : public QObject
{
  Q_OBJECT
public:
  static Database* instance()
  {
  static QMutex mutex;
  if (!m_instance)
  {
    QMutexLocker locker(&mutex);
    if (!m_instance)
    {
    m_instance = new Database();
    }
  }
  return m_instance;
  }
  static void destroy()
  {
  if (m_instance)
    delete m_instance;
  }
  explicit Database(QObject *parent = 0);
  ~Database();
  //建立数据库连接
  bool CreateConnect();
  //关闭连接
  void CloseConnect();
  //创建表
  void CreateTable();
  //获取所有设备手术信息
  void GetAllInfoEquips(QVector<InfoEquipPatient> &infos);
  QSqlDatabase m_dbconn;
private:
  static Database* m_instance;
};
//Database.cpp
#include "Database.h"
Database *Database::m_instance = 0;
Database::Database(QObject *parent)
  : QObject(parent)
{
}
Database::~Database()
{
}
bool Database::CreateConnect()
{
  m_dbconn = QSqlDatabase::addDatabase("QSQLITE", "MyConnect");
  QString fullpath = "spine.db";//数据库文件在debug/release根目录下,一般会自己创建
  m_dbconn.setDatabaseName(fullpath);
  //数据库登录用户名和密码设置
  m_dbconn.setUserName("root");
  m_dbconn.setPassword("123456");
  if (!m_dbconn.open())
  {
  qDebug() << "Database::CreateConnect()::failed connect.";
  return false;
  }
  else
  {
  qDebug() << "Database::CreateConnect()::success connect.";
  CreateTable();
  return true;
  }
}
void Database::CloseConnect()
{
  m_dbconn.close();
}
void Database::CreateTable()
{
  QSqlQuery query(this->m_dbconn);
  QString str_SqlEquipInfo = "CREATE TABLE InfoEquip(Hospital varchar(1024),Doctor varchar(1024),PatientId varchar(1024),PatientName varchar(1024),PatientSex varchar(10),PatientAge varchar(10),Disease varchar(1024),Location varchar(100),Time varchar(100),EquipCode varchar(100));";
  if (query.exec(str_SqlEquipInfo))
  {
  qDebug() << "Database::::Create Tables successful!";
  }
  else
  {
  qDebug() << "Database::::Tables Exist!";
  }
}
void Database::GetAllInfoEquips(QVector<InfoEquipPatient> &infos)
{
  QSqlQuery query(this->m_dbconn);
  QString str_SqlSelectAll = "select * from InfoEquip";
  query.prepare(str_SqlSelectAll);
  if (!query.exec())
  {
  qDebug() << query.lastError();
  }
  else
  {
  qDebug() << "Database::get_all_infoEquips!";
  while (query.next())
  {
    InfoEquipPatient info;
    info.Hospital = query.value("Hospital").toString();
    info.Doctor = query.value("Doctor").toString();
    info.PatientId = query.value("PatientId").toString();
    info.PatientName = query.value("PatientName").toString();
    info.PatientSex = query.value("PatientSex").toString();
    info.PatientAge = query.value("PatientAge").toString();
    info.Disease = query.value("Disease").toString();
    info.Location = query.value("Location").toString();
    info.Time = query.value("Time").toString();
    info.CodeEquip = query.value("EquipCode").toString();
    infos.push_back(info);
  }
  } 
}
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
  //创建数据库连接
  Database *m_database = Database::instance();
  m_database->CreateConnect();
    return a.exec();
}
//XXX.h
#include"Database.h"
Database *m_database;//类内声明
//XXX.cpp调用数据库查询
m_database = Database::instance();
QVector<InfoEquipPatient> infos;
m_database->GetAllInfoEquips(infos);

推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:

零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)

https://xxetb.xet.tech/s/VsFMs


相关文章
|
5月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
198 1
Qt(C++)开发一款图片防盗用水印制作小工具
WK
|
1月前
|
开发框架 开发工具 C++
C++跨平台框架Qt
Qt是一个功能强大的C++跨平台应用程序开发框架,支持Windows、macOS、Linux、Android和iOS等操作系统。它提供了250多个C++类,涵盖GUI设计、数据库操作、网络编程等功能。Qt的核心特点是跨平台性、丰富的类库、信号与槽机制,以及良好的文档和社区支持。Qt Creator是其官方IDE,提供了一整套开发工具,方便创建、编译、调试和运行应用程序。Qt适用于桌面、嵌入式和移动应用开发。
WK
71 5
|
3月前
|
数据库 数据库管理
qt对sqlite数据库多线程的操作
本文总结了在Qt中进行SQLite数据库多线程操作时应注意的四个关键问题,包括数据库驱动加载、加锁、数据库的打开与关闭,以及QsqlQuery变量的使用。
218 1
|
4月前
|
存储 C++
【C++】C++ 基于QT实现散列表学生管理系统(源码+数据+课程论文)【独一无二】
【C++】C++ 基于QT实现散列表学生管理系统(源码+数据+课程论文)【独一无二】
103 1
【C++】C++ 基于QT实现散列表学生管理系统(源码+数据+课程论文)【独一无二】
|
4月前
|
Java 数据库连接 数据库
sqlLite 如何使用数据库连接池
这篇文章介绍了如何在SQLite数据库操作中使用HikariCP连接池以减少频繁建立和释放数据库连接的资源消耗,包括在Maven项目中添加依赖、配置HikariDataSource对象以及实现数据库连接池的具体代码示例。
|
4月前
|
C++
C++ Qt开发:QUdpSocket网络通信组件
QUdpSocket是Qt网络编程中一个非常有用的组件,它提供了在UDP协议下进行数据发送和接收的能力。通过简单的方法和信号,可以轻松实现基于UDP的网络通信。不过,需要注意的是,UDP协议本身不保证数据的可靠传输,因此在使用QUdpSocket时,可能需要在应用层实现一些机制来保证数据的完整性和顺序,或者选择在适用的场景下使用UDP协议。
197 2
|
4月前
|
存储 算法 C++
【C++】C++ QT实现Huffman编码器与解码器(源码+课程论文+文件)【独一无二】
【C++】C++ QT实现Huffman编码器与解码器(源码+课程论文+文件)【独一无二】
111 4
|
4月前
|
安全 C++
C++ QT 单例模式
C++ QT 单例模式
78 0
|
4月前
|
测试技术 数据库 数据库管理
SqlLite数据库连接池
这篇文章介绍了如何使用HikariCP作为SQLite数据库的连接池,包括配置依赖、创建连接池、获取连接、关闭连接以及进行数据库操作的示例代码和性能测试对比。
|
5月前
|
SQL 关系型数据库 MySQL
下一篇
DataWorks