上一篇博客说了,我在做银行管理系统,所以少不了数据的操作,刚开始的时候,我想用mysql做的,但是qtcreator自身并没有mysql的驱动,于是上网,找了好久,跟着网上的教程,把mysql编译了一下,我按着教程编译出来了,但是不知为什么,我的qtcreator还是没有识别mysql的驱动文件,为此,我将近花了两天的时间,qtcreate也被我卸了好几次,mysql的驱动也编译了好几次,但是,我尝尽了所有的办法,甚至将别人编译的文件也试着下载看看效果,很遗憾,还是没有用,无奈之下,我选择了sqlite3来做,我打算用qt把银行管理的系统做完后,再抽一点时间,用mfc和Windows下的网络编程实现一下,qt固然好用,但它已经把所有的东西都封装好了,我不能仅仅满足于qt提供的库,我还是要花点时间在Windows下的网络编程以及系统编程,Windows下的话mysql就能用了,哎,浪费了两天时间,最终还是没有装好,还是有点遗憾。

  以下是我学qtsqlite3操作的一个例子,如果有需要的朋友可以看下:

/********************************************************************************
** Form generated from reading UI file 'sql.ui'
**
** Created: Thu Feb 16 14:03:41 2017
**      by: Qt User Interface Compiler version 4.8.1
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/#ifndef UI_SQL_H
#define UI_SQL_H#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QHeaderView>
#include <QtGui/QMainWindow>
#include <QtGui/QMenuBar>
#include <QtGui/QStatusBar>
#include <QtGui/QToolBar>
#include <QtGui/QWidget>QT_BEGIN_NAMESPACEclass Ui_sql
{
public:QMenuBar *menuBar;QToolBar *mainToolBar;QWidget *centralWidget;QStatusBar *statusBar;void setupUi(QMainWindow *sql){if (sql->objectName().isEmpty())sql->setObjectName(QString::fromUtf8("sql"));sql->resize(400, 300);menuBar = new QMenuBar(sql);menuBar->setObjectName(QString::fromUtf8("menuBar"));sql->setMenuBar(menuBar);mainToolBar = new QToolBar(sql);mainToolBar->setObjectName(QString::fromUtf8("mainToolBar"));sql->addToolBar(mainToolBar);centralWidget = new QWidget(sql);centralWidget->setObjectName(QString::fromUtf8("centralWidget"));sql->setCentralWidget(centralWidget);statusBar = new QStatusBar(sql);statusBar->setObjectName(QString::fromUtf8("statusBar"));sql->setStatusBar(statusBar);retranslateUi(sql);QMetaObject::connectSlotsByName(sql);} // setupUivoid retranslateUi(QMainWindow *sql){sql->setWindowTitle(QApplication::translate("sql", "sql", 0, QApplication::UnicodeUTF8));} // retranslateUi};namespace Ui {class sql: public Ui_sql {};
} // namespace UiQT_END_NAMESPACE#endif // UI_SQL_H
#ifndef CONNECTION_H
#define CONNECTION_H#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlQuery>static bool createConnection()
{QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName("use.db");if(!db.open()){QMessageBox::critical(0,"cannot open database","unable to establsh a database connection.",QMessageBox::Cancel);return false;}QSqlQuery query;query.exec("create table customers(customerId INTEGER PRIMARY KEY,name varchar(50),city varchar(50),""customerType varchar(50),addTime date,addFromDepartment  varchar(10),quantity INTEGER );");query.exec(QObject::tr("insert into customers(name,city,customerType,addTime,addFromDepartment,quantity) values('张志国','中国','普通客户','2011-10-22','财务部',3);"));query.exec("insert into customers(name,city,customerType,addTime,addFromDepartment,quantity) values('靳红浩','法国','主要客户','2012-11-1','销售部',2) ;");query.exec("insert into customers(name,city,customerType,addTime,addFromDepartment,quantity) values('高武明','中国','普通客户','2013-5-12','编辑部',12) ;");query.exec("insert into customers(name,city,customerType,addTime,addFromDepartment,quantity) values('王玲菲','德国','特殊客户','2007-1-12','编辑部',5) ;");query.exec("insert into customers(name,city,customerType,addTime,addFromDepartment,quantity) values('马达达','中国','主要客户','2008-2-19','财务部',3) ;");query.exec("insert into customers(name,city,customerType,addTime,addFromDepartment,quantity) values('马凯文','德国','特殊客户','2000-4-23','财务部',6) ;");query.exec("insert into customers(name,city,customerType,addTime,addFromDepartment,quantity) values('姚明明','美国','特殊客户','2011-5-23','编辑部',2) ;");query.exec("insert into customers(name,city,customerType,addTime,addFromDepartment,quantity) values('余铭宏','中国','主要客户','2012-12-2','销售部',7) ;");query.exec("insert into customers(name,city,customerType,addTime,addFromDepartment,quantity) values('张艺谋','法国','特殊客户','2013-1-2','编辑部',2) ;");query.exec("insert into customers(name,city,customerType,addTime,addFromDepartment,quantity) values('张斯五','中国','普通客户','2010-1-3','销售部',1);");query.exec("create table student(id INTEGER,name TEXT, primary key(id))");query.exec("insert into student values(1,'LiuTao');");query.exec("insert into student values(2,'WangHong');");query.exec("insert into student values(3,'WangHong');");query.exec("insert into student values(4,'WangHong');");query.exec("insert into student values(5,'WangHong');");query.exec("insert into student values(6,'WangHong');");query.exec("create table save_user(account TEXT, passward TEXT, name TEXT, moto TEXT, likes INTEGER, vip INTEGER, primary key(account))");query.exec("insert into save_user values('88888888','hujianfei','胡剑飞', '我想回家',8,1)");return true;
}#endif // CONNECTION_H
#ifndef SQL_H
#define SQL_H#include <QMainWindow>namespace Ui {
class sql;
}class sql : public QMainWindow
{Q_OBJECTpublic:explicit sql(QWidget *parent = 0);~sql();private:Ui::sql *ui;
};#endif // SQL_H
#include "sql.h"
#include "ui_sql.h"
#include <QDebug>
#include <QSqlQuery>
#include <QSqlTableModel>
#include <QSqlRelationalTableModel>
#include <QTableView>
#include <QMessageBox>
#include <QSqlError>sql::sql(QWidget *parent) :QMainWindow(parent),ui(new Ui::sql)
{ui->setupUi(this);QSqlQueryModel *model = new QSqlQueryModel(this);model->setQuery("select * from student");model->setHeaderData(0,Qt::Horizontal, tr("学号"));model->setHeaderData(1,Qt::Horizontal, tr("姓名"));QTableView *view = new QTableView(this);view->setModel(model);setCentralWidget(view);}sql::~sql()
{delete ui;
}
#include <QtGui/QApplication>
#include <QSqlDatabase>
#include <QDebug>
#include "connection.h"
#include <QVariant>
#include <QStringList>
#include <QSqlQuery>
#include <QSqlTableModel>
#include <QSqlRelationalTableModel>
#include <QTableView>
#include <QMessageBox>
#include <QSqlError>
#include <QTextCodec>
#include "sql.h"int main(int argc, char *argv[])
{QApplication a(argc, argv);QTextCodec::setCodecForTr(QTextCodec::codecForLocale());                     //将字体乱码变为中文//QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));                 //使用GB18030字符集 效果和上一样QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());                 //将之后用到的不是显示的中文字符不显示乱码if(!createConnection()){return 1;}//    QSqlQuery query;
//    query.exec("select * from student");
//    while(query.next())
//    {
//        qDebug()<<query.value(0).toInt()<<query.value(1).toString();
//    }sql w;w.show();return a.exec();
}

QT学习之路七(qt的数据库操作)相关推荐

  1. Qt学习之路(17): Qt标准对话框之QMessageBox

    好久没有更新博客,主要是公司里面还在验收一些东西,所以没有及时更新.而且也在写一个基于Qt的画图程序,基本上类似于PS的东西,主要用到的是Qt Graphics View Framework.好了,现 ...

  2. Qt学习之路(35): Qt容器类之顺序存储容器

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://devbean.blog.51cto.com/448512/245988 本来计划 ...

  3. Qt 学习之路 :Qt 线程相关类

      希望上一章有关事件循环的内容还没有把你绕晕.本章将重新回到有关线程的相关内容上面来.在前面的章节我们了解了有关QThread类的简单使用.不过,Qt 提供的有关线程的类可不那么简单,否则的话我们也 ...

  4. Qt学习之路(37): Qt容器类之关联存储容器

    2019独角兽企业重金招聘Python工程师标准>>> 今天我们来说说Qt容器类中的关联存储容器.所谓关联存储容器,就是容器中存储的一般是二元组,而不是单个的对象.二元组一般表述为& ...

  5. c语言编一个dll 用message box 弹出一个对话框,Qt学习之路(17): Qt标准对话框之QMessageBox...

    2015-06-25 16:41 下面的是vc6中创建的dll程序|@||@|// TestDll2QT.cpp : Defines the initialization routines for t ...

  6. Qt学习之路_12(简易数据管理系统)

    原文地址为: Qt学习之路_12(简易数据管理系统) 前言 最近从大陆来到台湾,之间杂事很多,挤不出时间来更新博客- 这次主要是通过做一个简易的数据库管理系统,来学习在Qt中对数据库,xml,界面的各 ...

  7. QT学习之路2 学习笔记

    QT学习之路2 学习笔记 1.Qt 是一个著名的 C++ 应用程序框架.你并不能说它只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI 组件.使用 Qt,在一定程度上你获得的是一个&quo ...

  8. 《Qt 学习之路 2》

    Home / Qt 学习之路 2 / <Qt 学习之路 2>目录 <Qt 学习之路 2>目录 序 Qt 前言 Hello, world! 信号槽 自定义信号槽 Qt 模块简介 ...

  9. 转载: Qt 学习之路 2归档

    Qt 学习之路 2归档 http://www.devbean.net/2012/08/qt-study-road-2-catelog/

  10. 对QT学习之路12-14的源代码补充与修正

    QT学习之路12-14的源代码有些不完整,为了更好的让大家学习,本人做了一点修正与补充,谢谢.源代码如下: 头文件: #ifndef MAINWINDOW_H #define MAINWINDOW_H ...

最新文章

  1. chinese_L-12_H-768_A-12的一个坑
  2. 优云,新一代运维PaaS平台
  3. J2EE (六) 详解 java 中文乱码
  4. iOS内存管理编程指南
  5. Python学习(四)
  6. Jquery DataTable服务端分页的最佳实现
  7. fir.im Weekly - 2016 年 Android 最佳实践列表
  8. 活久见!一美国大爷发明了永不掉链子的自行车,垂直踩踏即可驱动
  9. 动态样式计算 动态样计算 <span :style=“{‘left‘:`${(l+1)*16 - 6}`+‘px‘}“></span>
  10. 极光推送指定用户推送_App用户都睡着了?是时候用推送和活动唤醒一波了!
  11. 从环境搭建到回归神经网络案例,带你掌握Keras
  12. 2021年Node.js开发人员学习路线图
  13. 计算机系统-电路设计07-上升沿D触发器的内部电路实现/移位寄存器/串行接口/并行接口
  14. loj136 (最小瓶颈路,多次询问)
  15. 海南省重点公共场所WiFi覆盖率达到97.7%
  16. 将应用程序11M内存占用,降至500K左右
  17. Ubuntu下F2FS文件系统的安装与挂载
  18. html调用矢量小图标的方法,微信小程序里引入SVG矢量图标的方法
  19. SVN可视化管理工具
  20. 两种典型的解空间树:子集树和排列树

热门文章

  1. 进销存软件定制开发怎么做?
  2. 计算机组成原理(唐朔飞)--第一篇 概论
  3. “你”“我”“他”在Unicode表中的位置。
  4. 在一起计时器_奇妙物理·高中篇:打点计时器基本介绍
  5. 抖音超火的网页表白代码大全(浪漫的html表白源代码)
  6. 数据库 SQL 查询当前时间
  7. 解决树莓派 no wireless interfaces found问题
  8. 教学软件哪个好用,推荐这四个
  9. 3S技术集成与综合应用实习报告(一)
  10. 什么样的水平才算是java高级工程师?