
数据库
屌程
无奈的90后
展开
-
SQLite使用小结
一、SQLite简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java等,还有ODBC接口,同样比起MySQL、P转载 2017-05-09 10:39:28 · 1825 阅读 · 0 评论 -
Qt 之 Cached Table Example 解析
总体概述 Cached Table Example原创 2017-09-15 18:35:30 · 975 阅读 · 0 评论 -
Qt 之 QSqlRelation Class
详细描述QSqlRelation 储存一个关于(数据库)SQL外键的信息。QSqlRelation 是 QSqlRelationalTableModel 的一个辅助类。详细参照QSqlRelationalTableModel::setRelation() 和QSqlRelationalTableModel::relation() 。相关APIQSqlRe原创 2017-09-07 17:21:16 · 1026 阅读 · 0 评论 -
Qt 之 QSqlRelationalDelegate Class
详细描述QSqlRelationalDelegate类提供一个委托用于显示和编辑来自QSqlRelationalTableModel.的数据。不像默认的委托,QSqlRelationalDelegate为关联到其他表的外键字段提供一个组合框(下拉列表框)。使用这个类,简单地在视图中用一个QSqlRelationalDelegate 实例调用QAbstractItemView::setI原创 2017-09-08 16:40:23 · 1805 阅读 · 0 评论 -
Qt 之 QSqlField Class
详细描述QSqlField 类在SQL数据库表和视图中操作字段。QSqlField 表示数据库中单个列的特征,例如数据类型和列名(字段名)。字段还包括数据库列的值可以查看或者修改它。字段的数据值存储为QVariants。使用不兼容的类型是不允许的。例如: QSqlField field("age", QVariant::Int); field.原创 2017-08-31 14:57:02 · 2268 阅读 · 0 评论 -
Qt 之 QSqlRecord Class
详细描述QSqlRecord 类封装了一条数据库记录。QSqlRecord 类封装了数据库记录的功能和特征(通常是数据库中表或视图中的一行)。QSqlRecord 支持添加和删除字段以及设置和检索字段值。可以通过setValue()的名称或者位置来设置记录字段的值;如果你想要设置一个字段为空可以使用setNull()。通过名称使用indexOf() 找到字段的位原创 2017-08-31 23:12:13 · 11544 阅读 · 0 评论 -
Qt 之 QSqlDriverCreator Class
详细描述QSqlDriverCreator 类是为特定驱动类型提供SQL驱动工厂的模板类。QSqlDriverCreator实例化类型T的对象,其中T是 QSqlDriver的子类。怎么注册一个SQL驱动我们可以通过 void QSqlDatabase::registerSqlDriver(const QString & name, QSqlDriverCreato原创 2017-09-01 14:40:50 · 1014 阅读 · 0 评论 -
Qt 之 QSqlDriverCreatorBase Class
详细描述QSqlDriverCreatorBase类是SQL驱动(程序)工厂的基类。重新实现纯虚函数createObject()以返回你想要提供的特定的QSqlDriver子类的一个实例。QSqlDriverCreatorBase是个抽象类,只提供接口供子类QSqlDriverCreator等使用,不能实例化QSqlDriverCreatorBase(带有纯虚函数)。原创 2017-09-01 15:07:07 · 572 阅读 · 0 评论 -
如何理解并正确使用MySQL索引
ALTER TABLE 'table_name' ADD INDEX 'index_name' ('column1', 'column2', ...);4. B+Tree的索引规则创建一个测试的用户表DROP TABLE IF EXISTS user_test;CREATE TABLE user_test( idint AUTO_INCREMENT PRIMARY KEY, user_转载 2017-09-27 12:51:36 · 407 阅读 · 0 评论 -
Qt 之 QSqlDriverPlugin Class
详细描述QSqlDriverPlugin类为自定义 QSqlDrive插件提供一个抽象基类。SQL驱动插件是一个简单的插件接口,可以很容易地创建自己的SQL驱动(程序)插件,这些插件可以通过Qt动态加载。编写一个SQL插件是通过子类化这个基类实现的,重新实现纯虚函数create(),并通过 Q_PLUGIN_METADATA()宏导出这个类。参见使用Qt来实现的SQL插件(在源码包原创 2017-09-01 18:16:29 · 1417 阅读 · 1 评论 -
Linux系统下 解决Qt5无法连接MySQL数据库的方法
Linux平台下解决Qt5连接mysql数据库的问题:输入sudo apt-get install libqt5sql5-mysql解决,这种方法只能解决Qt是用sudo apt-get install qt-sdk命令装的低版本的Qt5(如5.2.x)缺少MySQL驱动问题,如果你的Qt5版本为5.7.X,那么就不能用这种方法解决,请参考下面的方法。 传统解决方法:一、解决问题转载 2017-12-01 18:48:56 · 2266 阅读 · 0 评论 -
SQL 实现日期(时间)相加减
前言时间(日期)的相加减是编程中经常会遇到的场景,我们使用的很多第三方库都会提供相应的API来供程序员实现时间(日期)的相加减。楼主一直使用的Qt库的QDate类就有提供addDays()系列API供程序员调用。在结构化查询语言SQL中同样可以实现时间(日期)的相加减,下面就来看几个例子。SQL实现日期(时间)加减实例SQL实现时间相加减:select date(date(原创 2017-12-01 19:45:32 · 91647 阅读 · 2 评论 -
Qt Linux 连MySQL出现libqsqlmysql.so路径问题
在Linux下使用Qt连接MySQL的时候运行如下代码:QSqlDatabase::addDatabase("QMYSQL");经常遇到以下错误:QSqlDatabase: QMYSQL driver not loadedQSqlDatabase: available drivers: QSQLITE QPSQL QPSQL7主要是因为MySQL驱动的问题,在Q原创 2017-12-19 17:57:23 · 2208 阅读 · 0 评论 -
Qt 之 QSqlRelationalTableModel Class
详细描述QSqlRelationalTableModel 为单一库表提供一个支持外键的可编辑的数据模型。QSqlRelationalTableModel 行为就像 QSqlTableModel,但是允许将列作为外键设置给(到)其他库表。上面左边屏幕截图显示了QTableView中一个简单的QSqlTableModel 。外键(city和country)没有被解析原创 2017-09-07 18:30:27 · 2213 阅读 · 0 评论 -
SQLite datatime()函数为何获取不到系统本地时间?
前言最近项目中频繁用到SQLite的时间日期这些函数,发现一个很奇怪的问题:就是当使用datetime()函数获取日期时间时,得到的日期时间和你系统的本地时间是不一致的。有图有真相系统时间是2018-02-11 04:07:xx(pm) ,但是通过datetime() 获得的日期时间却是2018-02-11 08:07:03。如何获得系统的日期时间为什么会出现这种情况?难道是SQLite的bug?...原创 2018-02-11 11:44:21 · 3067 阅读 · 0 评论 -
Qt 之 QSqlTableModel Class
详细描述QSqlTableModel 类为单个数据库表提供了一个可编辑的数据模型。QSqlTableModel 是一个从单个表读取和写入数据库记录的高级接口。它构建在较低级别的QSqlQuery之上,并且可以用来提供数据给诸如QTableView的视图类(以查看数据)。例子: QSqlTableModel *model = new QSqlTableModel(par原创 2017-09-05 17:47:34 · 6650 阅读 · 5 评论 -
数据库主键和外键的区别
什么是主键、外键关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 课程表(课程编号,课程名,学分) 其中课程编号是唯一的,课程编号就是一个主键 成绩表(学号,课程号,成绩) 成绩表中单一一个属性无法唯一标识一转载 2017-09-14 11:47:53 · 1576 阅读 · 0 评论 -
SQLite怎么统计一个数据库中有多少张表,视图或者触发器
sqlite数据库中表、视图和触发器的基本信息存储在一张叫做sqlite_master的系统表中,所以要想统计有多少张表就要先学习sqlite_master表。每一个sqlite数据库都有一张叫做sqlite_master的表,它定义数据库的模式。sqlite_master的表结构如下:CREATE TABLE sqlite_master (type TEXT,name TEX原创 2017-05-09 16:12:02 · 4012 阅读 · 0 评论 -
sqlite3 解决并发读写冲突的问题
1 #include "stdafx.h" 2 #include "sqlite3.h" 3 #include 4 #include 5 6 //sqllite 相关变量 7 sqlite3 *sql_db; 8 char *sql_ErrMsg; 9 int sql_rc; 10 sqlite3_stmt *sql_statement; 11 12转载 2017-05-19 16:16:38 · 6205 阅读 · 0 评论 -
SQLite数据库锁问题
记得以前设计评审时,想用SQLite数据库实现某个功能,被教导说应该用Postgresql数据库,因为Postgresql数据库是行锁,而SQLite的锁粒度太粗了。当时还没有什么感觉。后来在另一个产品的群里面,经常看到其中的开发和测试说SQLite数据库死锁了。这才留了一下心。最近又要使用它,于是拜读了下《SQLite权威指南》,里面赫赫一句话:SQLite处理并发读没有什么问题,但是如转载 2017-05-19 16:24:57 · 1222 阅读 · 0 评论 -
Qt SQL
Qt SQL 是一个提供SQL数据库支持的重要模块。Qt SQL的API被分为不同的层次:*驱动层次*SQL API 层次*用户接口层次 SQL Programming 手册中包含了使用Qt SQL开发的信息。入门指南在一个工程中使用Qt SQL,需要在C++文件中添加预处理指令:·#include ;该指令包含了Qt SQL中左右的内容。一般LZ原创 2017-08-10 16:59:38 · 584 阅读 · 0 评论 -
Qt 之 QSqlDatabase Class
详细描述QSqlDatabase 类代表一个数据库连接(LZ 觉得这个类叫做 QSqlDatabaseConnection 意思更明确)。QSqlDatabase 类提供一个通过连接去访问数据库的接口。一个 QSqlDatabase 实例代表一个连接。该连接提供了通过Qt 支持的数据库驱动 去访问数据库的接口,这些驱动派生自 QSqlDriver 类。或者,你可以从 QSqlDriver原创 2017-08-17 18:25:30 · 1302 阅读 · 0 评论 -
Qt 之 QSqlQuery Class
详细描述QSqlQuery 类提供了一种执行和操作SQL语句的方法。QSqlQuery 封装了从在一个 QSqlDatabase(数据库连接)上的SQL 查询(queries) 创建,导航,检索(取回) 数据的功能。它可以用来执行DML(data manipulation language)即数据操作语句,比如 select,insert,update,delete 即数据库最常用的增原创 2017-08-20 14:04:23 · 2612 阅读 · 0 评论 -
Qt 之 QSqlQueryModel Class
详细描述 QSqlQueryModel 类为SQL结果集提供了一个只读的数据模型。QSqlQueryModel 提供用于执行SQL语句和遍历结果集的高级接口。它是建立在低层的 QSqlQuery之上并且可以用以提供数据给例如 QTableView之类的视图类。例如: QSqlQueryModel *model = new QSqlQueryModel; model原创 2017-09-03 21:21:24 · 3255 阅读 · 3 评论 -
Qt SQL C++ Classes
Qt SQL模块为SQL数据库提供了一个驱动层,API层和用户接口层的C++类和接口。 Namespaces(命名空间):QSql(不是 QtSqL 哦) : 改命名空间中包含在Qt SQL模块中使用的其他标识符。 Qt SQL模块提供的数据库操作类:QSqlDatabase : 代表一个到数据库的连接 QSqlDriver : 用于访问特定SQL数原创 2017-08-10 18:11:16 · 682 阅读 · 0 评论 -
Qt 之 QSqlIndex Class
数据库索引概念索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。索引的一个主要目的就是加快检索表中数据的方法,亦即能协助信息搜索者尽快的找到符合限制条件的记录ID的辅助数据结构。索引是对数据库表中一个或多个列(例如,employee原创 2017-08-26 17:20:14 · 1092 阅读 · 0 评论 -
Qt 之 QSqlDriver Class
详细描述QSqlDriver类是用于访问特定数据库的抽象基类。和QSqlQuery类一样,QSqlDriver类也不应该直接使用。使用QSQLDatabase类代替(LZ猜测Qt这是不是用了组合模式)。如果你要创建自己的SQL驱动,你可以子类化QSqlDriver类并重新实现它的纯虚函数和那些你需要的虚函数。可以去Qt Assistant中搜索How to Write Your O原创 2017-08-23 15:59:11 · 3111 阅读 · 0 评论 -
Qt 之 Relational Table Model Example 解析
总体概述Relational Table Model Example 例子用到的技术点主要是数据库连接的建立,数据库相关参数的设置,如何执行结构化查询语言(SQL),数据库外键的使用,模型视图框架的使用等等。代码解析int main(int argc, char *argv[]){ QApplication app(argc, argv); if (!cr原创 2017-09-12 18:09:30 · 899 阅读 · 0 评论 -
Qt 之 QSqlResult Class
详细描述QSqlResult 类提供了从特定数据库访问数据的抽象接口。通常地,我们使用QSqlQuery而不是QSqlResult,因为QSqlQuery为特定于数据库的QSqlResult实现提供了一个通用的包装器。如果你实现你自己的SQL驱动(通过子类化QSqlDriver),你将需要提供你自己的实现了所有纯虚函数和其它你需要的虚函数的QSqlResult子类。相关原创 2017-09-04 17:55:43 · 3820 阅读 · 0 评论 -
Qt 之 Query Model Example 解析
总体概括Query Model Example主要演示了怎么使用QSqlQueryModel这个数据库查询模型类。其中包括创建普通的数据库查询模型、可编辑的数据库查询模型和自定义的数据库查询模型。普通(默认)的数据库查询模型是只读的(不可再模型中编辑数据,模型只通过视图展示数据);可编辑的数据库查询模型重写了QSqlQueryModel的flags()方法和setData()方法;自定义的数据原创 2017-09-13 17:37:50 · 3480 阅读 · 0 评论 -
Qt 之 QSqlError Class
详细描述QSqlError 类提供了SQL数据库错误信息。一个QSqlError 对象可以提供特定数据库的错误信息,包括driverText() 和 databaseText() 消息(或是将两者结合的 text() 消息),还有nativeErrorCode() 和type().。相关成员enum QSqlError::ErrorType该枚举描述了错误发生的上下原创 2017-08-28 17:55:46 · 9927 阅读 · 0 评论 -
Linux 下 安装 SQLite
下载安装包去sqlite官网(http://www.sqlite.org/index.html):点击Download按钮(跳转到http://www.sqlite.org/download.html):点击下载安装包,下载完成后将安装包拷贝到Linux机器上(楼主是在Windows上下载的,如果你就是在Linux上下载的则忽略这步)。安装步骤1、解压文件 tar -zxvf sqlite-aut...原创 2018-03-09 15:07:33 · 3873 阅读 · 0 评论