sqlite

SQLite3.8.4.2在Windows平台下的编译和使用

霸气de小男生 提交于 2020-03-02 12:47:09
SQLite is a software library that implements a self-contained , serverless , zero-configuration , transactional SQL database engine. SQLite is the most widely deployed SQL database engine in the world. The source code for SQLite is in the public domain . 下载源代码 可以在下面的链接中找到“Source Code”一栏: http://www.sqlite.org/download.html 当前提供了两个下载源,我们选择第一个 sqlite-amalgamation-3080402.zip 这个是将代码整合过的,解压后应该有下面几个文件: shell.c sqlite3.c sqlite3ext.h sqlite3.h 其中sqlite3.c源文件很大。可以看得出确实是整合在一起的,不过不影响我们编译。 2. 编译源代码 这里使用Visual Studio 2013进行编译,启动VS2013,选择从现有代码创建项目,如图: 项目类型为Visual C++,项目文件位置选择解压的源代码目录,项目名称随便打一个,其他选项默认,下一步。

SQLite学习手册

核能气质少年 提交于 2020-03-02 09:41:04
先来一段客套话   SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至今已经有12个年头,SQLite也迎来了一个版本 SQLite 3已经发布。 它的Logo里头的那条毛,估计就是说明它够轻的意思。 1 工具   最原始的工具当然是命令模式的工具,也有图形界面的,FireFox的SQLite Manager,SQLiteSpy,VS也行,以前找到一个免费的好像还可以的忘了叫什么名字了。找了几个都不好用干脆原始一点用命令模式算了,可以到官网里下,有个Shell的那个就是命令行工具了。   输入“.help”就会弹出一大堆内置的命令,各个命令的功能如下 命令名 命令说明 .help 列出所有内置命令。 .backup DBNAME FILE 备份指定的数据库到指定的文件,缺省为当前连接的main数据库。 .databases

Python操作SQLite数据库

大憨熊 提交于 2020-03-02 02:44:33
今天我们要学习的是关于SQLite数据库的相关知识,首先我们来看一下什么是SQLite数据库 1.什么是SQLite数据库 SQLite是一种嵌入式数据库,它的数据库就是一个文件,且SQLite是遵守ACID的关系数据库管理系统,它包含在一个相对小的C程序库中,与许多其它数据库管理系统不同,SQLite不是一个客户端/服务器结构的数据库引擎,而是被集成在用户程序中的嵌入式关系型数据库; SQLite遵守ACID,实现了大多数SQL标准,它使用动态的、弱类型的SQL语法; SQLite作为嵌入式数据库,是应用程序,如网页浏览器,在本地/客户端存储数据的常见选择; 2.Python操作SQLite数据库 我们已经知道了SQLite数据库是什么了,然后我们来学习一下它的使用,我简单把SQLite的使用分为一下步骤,一起来看一下: 首先第一步是导入sqlite3模块,sqlite3是一个与SQLite交互的库; 然后需要创建一个访问数据库的连接,比如我们创建一个测试用的数据库,命名为test.db; conn = sqlite3.connect('./test.db') 现在我们就已经连接到数据库了,然后需要创建游标也就是Cursor; cursor = conn.cursor() 通过Cursor执行SQL语句,然后获得执行结果,我们先来创建一个students表; sql =

[转载]SQLite 创建、修改、删除表

无人久伴 提交于 2020-03-02 02:06:11
、数据库定义语言 DDL 在关系型数据库中,数据库中的表 Table、视图 View、索引 Index、关系 Relationship 和触发器 Trigger 等等,构成了数据库的架构 Schema。 在 SQL 语句中,专门有一些语句用来定义数据库架构,这些语句被称为“数据库定义语言”,即 DDL。 SQLite 数据库引擎支持下列三种 DDL 语句: CREATE ALTER TABLE DROP 其中,CREATE 语句用来创建表 Table、视图 View、索引 Index、关系 Relationship 和触发器 Trigger, DROP语句用来删除表 Table、视图 View、索引 Index、关系 Relationship 和触发器 Trigger, ALTER TABLE 语句用来改变表的结构。 今天这一篇只涉及到表的相关内容,视图、触发器等到后面再讲。 二、SQLite 中的数据类型 SQLite 数据库中的数据一般由以下几种常用的数据类型组成: NULL - 空值 INTEGER - 有符号整数 REAL - 浮点数 TEXT - 文本字符串 BLOB - 二进制数据,如图片、声音等等 SQLite 也可以接受其他数据类型。 三、创建表 CREATE TABLE 首先,创建一个 test.db 数据库并进入 SQLite 命令行环境,还记得怎么做吗?

sqlite view定义查询页面

泄露秘密 提交于 2020-03-02 00:32:57
下面想象一个这样的场景,你的数据库有一个表中储存有用户信息,姑且称为user表。 .schema user CREATE TABLE user(id integer,name text,telphone text,unique(id)); 表user中储存有 id: 相当于用户的实际ID,唯一 name: 用户的用户名,供显示或者登录的时候使用 telphone:一个附加信息,电话号码 一般我们程序中还会有一个储存用户数据的表,这里引用为data表,里面储存的是一些用户数据,完全可以自定义。在多用户的情况下我们一般会添加一个字段user_id来表示这个数据的所属用户。 .schema data CREATE TABLE data(message text,time datetime,user_id integer); 这是一个简单的场景,现在我们的需求是 提供一个用户界面,可以显示出 姓名,时间,信息 我们需要怎么做呢,(这里不提我曾经见过的一个中规模程序中逻辑控制拼接这些信息的了,代码冗余且丑陋,性能更不用提~) 我们在数据库中创建一个view来解决(引用为view1): .schema view1 CREATE VIEW view1 as select (select name from user where id=data.user_id) as name,time

qt实现-给SQLITE添加自定义函数

ぃ、小莉子 提交于 2020-03-01 12:28:47
需要使用sqlite里的password对某个字段进行加密,由于使用的sqlite是由QT封装好的QSqlDatabase,没有发现加载扩展函数的方法,所以自己实现了一个。 在网上也没找到相应的参考,就自己查官方文档解决了。本篇文章主要是sqlite如何加载外部的函数,并没有password函数的实现,我将写好的函数生成了一个动态库,由程序动态加载。 #include <iostream> #include <QString> #include <QtSql/QSqlQuery> #include <QtSql/QSqlDatabase> #include <QtSql/QSqlQuery> #include <QtSql/QSqlError> #include <QtSql/QSqlDriver> #include <QVariant> #include <sqlite3.h> #include <string.h> using namespace std; void insert_database(QSqlDatabase& database,QString name) { QSqlQuery query(database); if(!query.exec("insert into data(name) values(password('"+name+"') )")) cout

解决网站使用sqlite时并发问题的一个经验

穿精又带淫゛_ 提交于 2020-03-01 06:40:03
前几天在CSDN上看到有人使用sqlite+tomcat实现一个web应用,并发操作引起数据库锁定,在发帖求助。这才想起自己以前做的一个web应用也有相同问题,顺便把自己解决方法写下来,供大家参考。 当时我的应用是给单位做一个月度工作计划的上报并生成WORD文件供排版、打印。考虑到数据量不大,没有现成数据库系统可用,并且当时自己已经为sqlite写了一个很好的辅助系统(当时叫SqliteHelper,就是现在xqk.data数据框架的原始版本,呵呵),就决定用sqlite数据库+asp.net来实现。 应用实现起来很简单,但是在上线试运行时,发现经常出项sqlite被锁定,不能读写的错误。也就是CSDN网友提到的并发问题。经过检查,发现问题出DbConnecting上。 在这个应用中,我是在每个aspx页面的Page_Load里打开sqlite数据库,等相关操作完成后再关闭。大概的代码是: void Page_Load(Object sender,EventArgs e) { DbConnector db = SqliteHelper.Connector(Application["dbfile"]); Plans[] plans = db.SelectAll(); ...... } 这个问题解决的过程记得不是很清楚了,但是最终的解决方法是: 先在Application

Sqlite平台类型导致的错误情况

痴心易碎 提交于 2020-03-01 05:02:09
{"未能加载文件或程序集“System.Data.SQLite, Version=1.0.97.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139”或它的某一个依赖项。试图加载格式不正确的程序。"} 出现情况: 原来程序编译时用的是vs2008在win 7 32系统环境下编译的。 把程序源码copy到win 8 64位 在vs2013下调试时出现如下错误。 未处理System.BadImageFormatException Message=未能加载文件或程序集“System.Data.SQLite, Version=1.0.97.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139”或它的某一个依赖项。试图加载格式不正确的程序。 Source=Model FileName=System.Data.SQLite, Version=1.0.97.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139 FusionLog==== 预绑定状态信息 === 日志: DisplayName = System.Data.SQLite, Version=1.0.97.0, Culture=neutral, PublicKeyToken

SQLiteDatabases and Cursors

删除回忆录丶 提交于 2020-03-01 04:06:27
问题 I was wondering if someone could give me a brief overview of Android Cursors. A couple of specific questions: 1 - I have a method which returns a cursor after a database query: public static Cursor getVehicles() { SQLiteDatabase db = vehicleData.getReadableDatabase(); Cursor cursor = db.query(TABLE_NAME, GET_VEHICLES_FROM_CLAUSE, null, null, null, null, ORDER_BY); return cursor; } In order to do housekeeping, I tried db.close() just before the return statement. However, this caused the

SQLiteDatabases and Cursors

大兔子大兔子 提交于 2020-03-01 04:05:05
问题 I was wondering if someone could give me a brief overview of Android Cursors. A couple of specific questions: 1 - I have a method which returns a cursor after a database query: public static Cursor getVehicles() { SQLiteDatabase db = vehicleData.getReadableDatabase(); Cursor cursor = db.query(TABLE_NAME, GET_VEHICLES_FROM_CLAUSE, null, null, null, null, ORDER_BY); return cursor; } In order to do housekeeping, I tried db.close() just before the return statement. However, this caused the