SQLite数据库基本接口介绍
sqlite使用说明

Sqlite使用说明一、简介:SQLite是目前最流行的开源嵌入式数据库,和很多其他嵌入式存储引擎相比(NoSQL),如BerkeleyDB、MemBASE等,SQLite可以很好的支持关系型数据库所具备的一些基本特征,如标准SQL语法、事务、数据表和索引等。
事实上,尽管SQLite拥有诸多关系型数据库的基本特征,然而由于应用场景的不同,它们之间并没有更多的可比性。
下面我们将列举一下SQLite的主要特征:1. 管理简单,甚至可以认为无需管理。
2. 操作方便,SQLite生成的数据库文件可以在各个平台无缝移植。
3. 可以非常方便的以多种形式嵌入到其他应用程序中,如静态库、动态库等。
4. 易于维护。
综上所述,SQLite的主要优势在于灵巧、快速和可靠性高。
SQLite的设计者们为了达到这一目标,在功能上作出了很多关键性的取舍,与此同时,也失去了一些对RDBMS关键性功能的支持,如高并发、细粒度访问控制(如行级锁)、丰富的内置函数、存储过程和复杂的SQL 语句等。
正是因为这些功能的牺牲才换来了简单,而简单又换来了高效性和高可靠性。
二、SQLite的主要优点:1. 一致性的文件格式:在SQLite的官方文档中是这样解释的,我们不要将SQLite与Oracle或PostgreSQL去比较,而是应该将它看做fopen和fwrite。
与我们自定义格式的数据文件相比,SQLite不仅提供了很好的移植性,如大端小端、32/64位等平台相关问题,而且还提供了数据访问的高效性,如基于某些信息建立索引,从而提高访问或排序该类数据的性能,SQLite提供的事务功能,也是在操作普通文件时无法有效保证的。
2. 在嵌入式或移动设备上的应用:由于SQLite在运行时占用的资源较少,而且无需任何管理开销,因此对于PDA、智能手机等移动设备来说,SQLite的优势毋庸置疑。
3. 内部数据库:在有些应用场景中,我们需要为插入到数据库服务器中的数据进行数据过滤或数据清理,以保证最终插入到数据库服务器中的数据有效性。
Python之Sqlite3数据库基本操作

Python之Sqlite3数据库基本操作在⼀些⼩的应⽤中,难免会⽤到数据库,Sqlite数据库以其⼩巧轻便,⽆需安装,移植性好著称,本⽂主要以⼀个简单的⼩例⼦,简述Python在Sqlite数据库⽅⾯的应⽤,仅供学习分享使⽤,如有不⾜之处,还请指正。
涉及知识点1. sqlite3是Python集成的内置类库,提供Python操作sqlite3的相关接⼝。
2. sqlite3.connect(dbfile) 创建数据库连接,返回⼀个连接对象3. conn.cursor() 创建游标对象,通过返回的cursor对象,执⾏相应的SQL语句。
4. cur.execute(sql, *args) 执⾏语句5. mit() 提交执⾏的结果到数据库6. conn.rollback() 回退执⾏的结果7. cur.close() 关闭cursor对象8. conn.close() 关闭连接对象基础操作代码关于Python操作sqlite3的相关核⼼代码,如下所⽰:创建数据表1def createDb():2"""创建db数据表"""3 sql = '''4 create table person (5 id integer primary key autoincrement not null,6 name varchar not null,7 age integer8 )9'''10 executeSql(sql)View Code插⼊语句1def insertData(name, age):2"""插⼊数据"""3 sql = 'insert into person (name,age)values(?,?)'4 executeSql(sql, (name, age))View Codeupdate语句1def updateData(id, name, age):2"""通过ID进⾏修改语句"""3 sql = 'update person set name=?,age =? where id=?'4 executeSql(sql, (name, age, id))View Codedelete语句1def deleteData(id):2"""通过ID删除数据"""3 sql = 'delete from person where id=?'4 executeSql(sql, (id,))View Code上⾯的语句都调⽤统⼀的executeSql⽅法,如下所⽰:1def executeSql(sql, *args):2"""执⾏更新语句"""3 conn = sqlite3.connect(dbfile)4 cur = conn.cursor()5try:6 cur.execute(sql, *args)7 mit()8print('执⾏成功,影响⾏数:', cur.rowcount)9except Exception as e:10 conn.rollback()11print(e)12print('执⾏失败')13finally:14 cur.close()15 conn.close()View Code查询语句(⽆条件查询)1def queryData():2"""查询语句"""3 sql = 'select id,name,age from person '4 executeQuerySql(sql)View Code查询语句(条件查询)1def queryDataById(id):2"""通过id进⾏查询"""3 sql = 'select id,name,age from person where id = ? '4 executeQuerySql(sql, (id,))View Code上⾯的查询语句,都调⽤统⼀的executeQuerySql⽅法,如下所⽰:1def executeQuerySql(sql, *args):2"""执⾏查询语句,可带参数"""3 conn = sqlite3.connect(dbfile)4 cur = conn.cursor()5try:6 cur.execute(sql, *args)7 persons = cur.fetchall()8for p in persons:9print('当前⾏信息如下:')10print(p) # 返回的是⼀个元组tuple11print('查询成功')12except Exception as e:13print(e)14print('查询失败')15finally:16 cur.close()17 conn.close()View Code关于本例⼦的执⾏源码,可通过链接进⾏下载,如下所⽰:Python参数传递⽅式Python的参数传递⼀共有以下五种(位置参数、默认参数、变长参数、关键字参数、命名关键字参数)位置传递,即参数按照定义的位置及顺序进⾏传递,如下所⽰:1# 位置传递实例:2def fun1(a, b, c):3return a + b + c456print(fun1(1, 2, 3))View Code关键字传递,即通过传递的参数的名称进⾏识别。
sqlite3数据类型和范围 -回复

sqlite3数据类型和范围-回复SQLite是一种轻量级的关系型数据库管理系统,被广泛应用于各种移动设备、嵌入式系统和桌面应用程序。
它支持多种数据类型,每种数据类型都有其特定的范围和用途。
本文将为您详细介绍SQLite中常用的数据类型及其范围。
一、SQLite数据类型概述SQLite支持多个主要数据类型,包括NULL、INTEGER、REAL、TEXT 和BLOB。
每个数据类型都可以用于存储不同类型的数据,并且具有不同的存储要求和使用限制。
1. NULLNULL是SQLite中表示空值的特殊数据类型。
它不存储任何数据,通常用于表示缺少值或未知值。
NULL类型可以用于任何数据列中,但不能用作PRIMARY KEY或UNIQUE约束的一部分。
2. INTEGERINTEGER数据类型用于存储整数值。
在SQLite中,整数可以表示为有符号整数或无符号整数。
有符号整数采用补码表示法存储,可以表示范围从-9223372036854775808到9223372036854775807的整数。
无符号整数采用无符号数值表示法存储,可以表示范围从0到18446744073709551615的整数。
3. REALREAL数据类型用于存储浮点数值,即带有小数点的数字。
SQLite使用IEEE浮点数表示法存储REAL类型数据。
REAL类型可以存储小数、负数和指数形式的数字。
它的精度和范围取决于所使用的计算机硬件和SQLite库的版本。
一般情况下,REAL类型可以表示范围从-1.0e+308到1.0e+308的浮点数。
4. TEXTTEXT数据类型用于存储文本字符串。
它可以存储任何长度的字符串,包括空字符串。
SQLite使用UTF-8编码存储TEXT类型的数据。
UTF-8编码是一种变长字符编码,可以表示包括ASCII字符和多字节Unicode 字符在内的所有字符。
因此,TEXT类型可以存储任何语言的文本数据。
5. BLOBBLOB数据类型用于存储二进制数据,如图像、声音、视频等文件。
SQLite的介绍操作Sqlite具体实例

SQLite的介绍操作Sqlite具体实例1.SQLite简介SQLite是⼀款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计⽬标是嵌⼊式的,⽽且⽬前已经在很多嵌⼊式产品中使⽤了它,它占⽤资源⾮常的低,在嵌⼊式设备中,可能只需要⼏百K的内存就够了。
它能够⽀持 Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语⾔相结合,⽐如Tcl、PHP、Java、C++、.Net等,还有ODBC接⼝,同样⽐起 Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度⽐他们都快。
2.SQLite的特点:轻量级SQLite和C/S模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器。
使⽤SQLite⼀般只需要带上它的⼀个动态库,就可以享受它的全部功能。
⽽且那个动态库的尺⼨也挺⼩,以版本3.6.11为例,Windows下487KB、Linux下347KB。
不需要"安装"SQLite的核⼼引擎本⾝不依赖第三⽅的软件,使⽤它也不需要"安装"。
有点类似那种绿⾊软件。
单⼀⽂件数据库中所有的信息(⽐如表、视图等)都包含在⼀个⽂件内。
这个⽂件可以⾃由复制到其它⽬录或其它机器上。
跨平台/可移植性除了主流操作系统 windows,linux之后,SQLite还⽀持其它⼀些不常⽤的操作系统。
弱类型的字段同⼀列中的数据可以是不同类型开源3.SQLite数据类型⼀般数据采⽤的固定的静态数据类型,⽽SQLite采⽤的是动态数据类型,会根据存⼊值⾃动判断。
SQLite具有以下五种常⽤的数据类型:NULL: 这个值为空值VARCHAR(n):长度不固定且其最⼤长度为 n 的字串,n不能超过 4000。
CHAR(n):长度固定为n的字串,n不能超过 254。
INTEGER: 值被标识为整数,依据值的⼤⼩可以依次被存储为1,2,3,4,5,6,7,8.REAL: 所有值都是浮动的数值,被存储为8字节的IEEE浮动标记序号.TEXT: 值为⽂本字符串,使⽤数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE).BLOB: 值是BLOB数据块,以输⼊的数据格式进⾏存储。
sqlite3接口函数

sqlite3接口函数(实用版)目录1.SQLite3 简介2.SQLite3 接口函数分类3.SQLite3 接口函数的使用方法4.SQLite3 接口函数的优缺点5.SQLite3 接口函数的未来发展正文1.SQLite3 简介SQLite3 是一款轻量级的关系型数据库,它的设计目标是提供一种嵌入式的、自给自足的数据库系统。
SQLite3 的使用场景非常广泛,例如桌面应用程序、移动应用程序和 Web 应用程序等。
由于其体积小、速度快以及不需要额外的管理工具,SQLite3 在很多场景下成为了开发者的首选。
2.SQLite3 接口函数分类SQLite3 提供了丰富的接口函数,主要可以分为以下几个类别:(1)数据库操作:包括打开、关闭、创建和删除数据库等操作。
(2)表操作:包括创建、删除、查询和修改表结构等操作。
(3)数据操作:包括插入、查询和更新数据等操作。
(4)查询操作:包括执行 SQL 语句和获取查询结果等操作。
(5)其他操作:包括获取数据库版本、创建函数和创建触发器等操作。
3.SQLite3 接口函数的使用方法以 Python 为例,使用 SQLite3 接口函数的基本步骤如下:(1)导入 sqlite3 模块。
(2)使用 sqlite3.connect() 函数建立与数据库的连接。
(3)创建游标对象,使用游标对象执行 SQL 语句。
(4)使用游标对象获取查询结果。
(5)关闭数据库连接。
4.SQLite3 接口函数的优缺点优点:(1)SQLite3 接口函数易于使用,学习成本低。
(2)SQLite3 接口函数跨平台,可以在多种操作系统上使用。
(3)SQLite3 接口函数提供了丰富的功能,可以满足大部分开发需求。
缺点:(1)SQLite3 接口函数相对于其他数据库驱动(如 MySQL、PostgreSQL 等)来说,功能较为单一。
(2)SQLite3 接口函数在某些高级功能上可能有所不足,例如全文检索、空间索引等。
sqlite3 连接条件

SQLite3支持多种类型的连接,主要有:
1.内连接(INNER JOIN):匹配成功的内容才输出,不匹配的不输出。
内连接有等值连接和自然连接两种类型。
等值连接使用ON子句加上=号
给出匹配条件,而自然连接不显式给出匹配条件,不写ON子句,默认匹配两张表中同名字段。
如果两张表中没有同名字段,返回两张表的笛卡尔积。
2.外连接(OUTER JOIN):不管匹配成功不成功,都输出。
外连接有左连接、右连接和全连接三种类型。
SQLite3只支持左外连接(LEFT OUTER
JOIN),使用ON、USING或NATURAL关键字来表达外连接(OUTER JOIN)声明条件的方法与内连接(INNER JOIN)是相同的。
此外,SQLite3还支持交叉连接(CROSS JOIN),其结果为笛卡尔积,即x*y。
如需了解更多关于SQLite3的连接条件的信息,建议查阅相关资料或咨询专业人士。
sqlite3数据结构

SQLite3 的数据结构主要包括以下几个部分:
1.数据库文件:SQLite3 数据库是一个磁盘文件,包含了所有的数据库和表数据。
这个文件可以被多个应用程序共享,并且具有轻量级、高性能
和可靠性的特点。
2.页面(Page):SQLite3 将数据存储在页面中,每个页面大小为4096 字节。
页面是SQLite3 进行磁盘I/O 操作的基本单位,通过页面
的大小可以控制数据库的存储空间和性能。
3.B-tree 结构:SQLite3 使用B-tree 结构来存储数据,这种结构能够高效地支持数据的插入、删除和查找操作。
在SQLite3 中,每个表都
对应一棵B-tree,用于存储表中的数据。
4.记录(Row):每个记录对应B-tree 中的一条节点,记录包含了表中所有的列数据。
在SQLite3 中,记录的大小最大为65536 字节,
可以存储大量的数据。
5.索引(Index):为了提高查询性能,SQLite3 还支持索引。
索引是一种特殊的数据结构,通过索引可以快速地找到表中满足特定条件的数据。
在SQLite3 中,索引和表使用相同的B-tree 结构。
6.触发器(Trigger)和存储过程(Stored Procedure):SQLite3 还支持触发器和存储过程,这些是高级的SQL 功能,可以用于实现复杂的业
务逻辑。
以上就是SQLite3 的主要数据结构,这些结构共同构成了SQLite3 数据库的完整体系。
sqlite3介绍

1. SQLite3简介SQLite3是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的SQL 数据库引擎。
SQLite是一个增长最快的数据库引擎,这是在普及方面的增长,与它的尺寸大小无关。
SQLite3源代码不受版权限制。
SQLite3是SQLite 一个全新的版本,它虽然是在SQLite 2.8.13的代码基础之上开发的,但是使用了和之前的版本不兼容的数据库格式和API,SQLite3是为了满足以下的需求而开发的:支持UTF-16编码、用户自定义的文本排序方法、可以对BLOBs字段建立索引。
因此为了支持这些特性我改变了数据库的格式,建立了一个与之前版本不兼容的3.0版。
至于其他的兼容性的改变,例如全新的API等等,都将在理论介绍之后向你说明,这样可以使你最快的一次性摆脱兼容性问题。
SQLite3是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的SQL 数据库引擎。
它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。
就像其他数据库,SQLite3引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。
SQLite3直接访问其存储文件。
为什么要用SQLite?不需要一个单独的服务器进程或操作的系统(无服务器的)。
SQLite3不需要配置,这意味着不需要安装或管理。
一个完整的SQLite3数据库是存储在一个单一的跨平台的磁盘文件。
SQLite3是非常小的,是轻量级的,完全配置时小于400KiB,省略可选功能配置时小于250KiB。
SQLite3是自给自足的,这意味着不需要任何外部的依赖。
SQLite3事务是完全兼容ACID 的,允许从多个进程或线程安全访问。
SQLite3支持SQL92(SQL2)标准的大多数查询语言的功能。
SQLite3使用ANSI-C 编写的,并提供了简单和易于使用的API。
SQLite3可在UNIX(Linux,Mac OS-X,Android,iOS)和Windows(Win32,WinCE,WinRT)中运行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQLite数据库
数据库DB (C/S)
移动客户端
服务器
SQLite
SqlServer Oracle MySQL
SQLite数据库的特点
1.轻量级 使用 SQLite 只需要带一个动态库,而且尺寸相当小。 2.独立性 SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。
移动到第一条记录 移动到最后一条记录 移动到指定的记录 移动到下一条记录 移动到上一条记录
getColumnIndex(String columnName) 获得指定列索引的int类型值
全查询的代码实现
//全查询 List<Map<String,Object>> list = new ArrayList<Map<String,Object>>(); DBHelper dbHelper = new DBHelper(this); SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.rawQuery("select * from person where id=?", new String[]{“1”});
Cursor 游标(指针)
方法名称 getCount() isFirst() 总记录条数 判断是否第一条记录 方法描述
isLast()
moveToFirst() moveToLast() move(int offset) moveToNext() moveToPrevio
ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>(); DBHelper helper = new DBHelper(this); SQLiteDatabase db = helper.getReadableDatabase(); String age = edAge.getText().toString(); Cursor cursor = db.query("person", // 表名 new String[] { "_id", "name", "age" }, // 列名 "age=?" // where模板 , new String[] { age },// -占位符的值 null,// 分组 null, // having null);// 排序 "age desc" // 解析结果集 while (cursor.moveToNext()) {// 移到下一行 HashMap<String, Object> map = new HashMap<String, Object>(); map.put("id", cursor.getString(0)); map.put("name", cursor.getString(1)); map.put("age", cursor.getString(2)); list.add(map); } cursor.close(); db.close(); listView.setAdapter(new SimpleAdapter(this, list, yout.item, new String[] { "id", "name", "age" }, new int[] { R.id.id, , R.id.age }));
(int) update(String table, ContentValues values, String whereClause, String[] 更新数据行的便捷方法 whereArgs) (void) execSQL(String sql) 执行一个SQL语句,可以是一个select或 其他的sql语句 (void) close() (Cursor) query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) (Cursor) rawQuery(String sql, String[] selectionArgs) 关闭数据库 查询指定的数据表返回一个带游标的 数据集 运行一个预置的SQL语句,返回带游标 的数据集(与上面的语句最大的区别 就是防止SQL注入)
while (cursor.moveToNext()) { Map<String,Object> map = new HashMap<String, Object>(); map.put("id", cursor.getString(0)); map.put("name", cursor.getString(1)); map.put("age", cursor.getString(2)); list.add(map); } cursor.close(); db.close(); listView.setAdapter(new SimpleAdapter( this, list, yout.item, new String[]{"id","name","age"}, new int[]{R.id.id,,R.id.age} ));
就只能读而不能写,倘若使用的是getWritableDatabase() 方法
就会出错。
getReadableDatabase()
先以读写方式打开数据库,如果数据库的磁盘空间满了,就会
打开失败,当打开失败后会继续尝试以只读方式打开数据库。
SQLiteDatabase
(返回值)方法名 (int) delete(String table,String whereClause,String[] whereArgs) (long) insert(String table,String nullColumnHack,ContentValues values) 方法描述 删除数据行的便捷方法 添加数据行的便捷方法
insert的代码实现
// 增 DBHelper dbHelper = new DBHelper(this); SQLiteDatabase db = dbHelper.getReadableDatabase(); ContentValues values = new ContentValues(); values.put("name", edName.getText().toString().trim()); values.put("age", edAge.getText().toString().trim()); db.insert("person", null, values); db.close();
案例:DBDemo
开发步骤:
1. 2. 3. 4. 创建项目 搭建布局 继承SQLiteOpenHelper 实现增删改查
搭建布局
main.xml item.xml
android:windowSoftInputMode="stateHidden|stateAlwaysHidden"
SQLiteOpenHelper
update的代码实现
// 改 DBHelper dbHelper = new DBHelper(this); SQLiteDatabase db = dbHelper.getReadableDatabase(); ContentValues values = new ContentValues(); String name = edName.getText().toString(); String age = edAge.getText().toString(); values.put("age", age); int row = db.update("person", values, "name=?", new String[]{name}); db.close();
delete的代码实现
// 删 DBHelper dbHelper = new DBHelper(this); SQLiteDatabase db = dbHelper.getReadableDatabase(); String name = edName.getText().toString().trim(); int row = db.delete("person", "name=?", new String[]{name}); db.close();
3.隔离性 SQLite 数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件夹内,方 便管理和维护。
4.跨平台 SQLite 目前支持大部分操作系统 5.多语言接口 SQLite 数据库支持多语言编程接口。 6.安全性 SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个 进程可以在同一时间从同一数据库读取数据,但只能有一个可以写入数据。
场景: 收藏新闻
新闻标题 北京警方公开... 北京申冬奥代... 新闻图片 …20150609011.jpg …20150609012.jpg 新闻链接 http://www.qian... http://www.sina... 发布时间 2015-06-09 09:30 2015-06-09 09:52