SQLite数据库基本接口介绍

合集下载

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数据库基本操作

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数据类型和范围 -回复

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具体实例

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接口函数

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 连接条件

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数据结构

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介绍

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)中运行。

sqlite 连接 语句

sqlite 连接 语句

sqlite 连接语句SQLite是一种嵌入式的关系型数据库管理系统,它是公共领域的开源软件。

SQLite数据库使用轻量级的、零配置的嵌入式SQL数据库引擎,它的设计目标是尽可能的简单和轻量,而不是追求高并发和高吞吐量。

在SQLite中,连接是指在应用程序和数据库之间建立通信的过程,通过连接,应用程序可以发送SQL语句给数据库执行,并获取执行结果。

下面是一些常见的SQLite连接语句示例:1. 连接到内存数据库:```pythonconn = sqlite3.connect(':memory:')```这个语句会创建一个在内存中的SQLite数据库连接对象,所有的数据都会保存在内存中,而不会写入到磁盘上。

2. 连接到磁盘上的数据库文件:```pythonconn = sqlite3.connect('path/to/database.db')```这个语句会创建一个连接到指定磁盘上的SQLite数据库文件的连接对象,数据库文件的路径需要根据实际情况进行修改。

3. 连接到远程SQLite数据库:```pythonconn = sqlite3.connect('host:port/path/to/database.db')```这个语句会创建一个连接到指定主机和端口上的远程SQLite数据库的连接对象,数据库文件的路径需要根据实际情况进行修改。

4. 连接到加密的SQLite数据库:```pythonconn = sqlite3.connect('path/to/database.db', key='encryption_key')```这个语句会创建一个连接到指定磁盘上的加密SQLite数据库文件的连接对象,使用指定的密钥进行解密。

5. 连接到只读的SQLite数据库:```pythonconn = sqlite3.connect('path/to/database.db', uri=True)```这个语句会创建一个连接到指定磁盘上的只读SQLite数据库文件的连接对象,只能执行查询操作,不能执行写入操作。

SQLite数据库如何存储和读取二进制数据

SQLite数据库如何存储和读取二进制数据

SQLite数据库如何存储和读取二进制数据1.存储二进制数据SQLite提供的绑定二进制参数接口函数为:int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));我们希望使用的是一套经过封装的COM接口,将上面这个函数封装为COM接口的形式BindParaByIndex( LONG index, VARIANT val);使用V ARIANT变量来传递二进制数据,可以使用到它的一个SAFEARRAY指针,它保存了二进制数据的地址和二进制数据的字节长度。

在我们的COM接口中可以这样进行调用原始接口:Sqlite3_bind_blob(m_pStmt, val.parray, val.parray->rsground->cElement,SQLITE_TRANSIENT);构造一个例子测试我们的接口:BYTE Data[] = {0x01,0x02,0x03,0x04,0x05};CComSafeArray<byte> *pcsfa;CComSafeArrayBound bound[1];bound[0].SetCount(5);bound[0].SetLowerBound(0);pcsfa = new CComSafeArray<byte>(bound,1);for(LONG i = 0; i <(LONG)5; i++){HRESULT hr = pcsfa->SetAt(i,Data[i]);}_variant_t variant;variant.vt = VT_ARRAY | VT_UI1;variant.parray = pcsfa->m_psa;将五个字节的数据封装到V ARIANT变量中,然后调用相应的接口,将它们存储到数据库中,然后调用下面的读取二进制接口,将数据读取出来,看是否读取的数据和存储的数据一致.2. 读取二进制数据读取二进制参数需要用到下面两个SQLite提供的API:const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);int sqlite3_column_bytes(sqlite3_stmt*, int iCol);访问也通过COM接口来实现:GetBlobData(LONG index, V ARIANT* pval);如何将原始接口读出来的数据封装到V ARIANT结构中去呢,网上这方面的参考资料好少,差了不少资料,发现网上有不上SAFEARRAY的实现方案,但是我一一试了一下没有一个可以将二进制数读入SAFEARRAY结构的,Mentor给我推荐了一个CcomSafeArray类,这个类成功实现了数据的存储。

sqlite 基本操作

sqlite 基本操作

sqlite 基本操作SQLite是一种轻量级的关系型数据库管理系统,它提供了一套简单易用的操作接口,使得开发者可以方便地进行数据库的创建、查询、更新和删除等基本操作。

本文将介绍SQLite的基本操作,包括数据库的创建与连接、表的创建与删除、数据的插入与查询、数据的更新与删除等内容。

一、数据库的创建与连接1. 创建数据库:使用SQLite提供的命令或者API,可以创建一个新的数据库文件。

可以指定数据库文件的路径和名称,也可以使用默认的名称。

2. 连接数据库:连接数据库是指在应用程序中与数据库建立起通信的通道。

通过连接数据库,可以执行后续的操作,包括创建表、插入数据、查询数据等。

二、表的创建与删除1. 创建表:在数据库中,表是用于存储数据的结构化对象。

通过使用SQLite提供的命令或者API,可以创建一个新的表。

在创建表时,需要指定表的名称和表的字段,以及每个字段的类型和约束。

2. 删除表:当不再需要某个表时,可以使用SQLite提供的命令或者API,将其从数据库中删除。

删除表的操作将会删除表中的所有数据,因此在执行删除操作前应慎重考虑。

三、数据的插入与查询1. 插入数据:在已创建的表中,可以通过使用SQLite提供的命令或者API,向表中插入新的数据。

插入数据时,需要指定数据要插入的表和字段,以及每个字段对应的值。

2. 查询数据:查询数据是使用SQLite最常见的操作之一。

通过使用SQLite提供的命令或者API,可以从表中检索出满足特定条件的数据。

查询操作可以使用各种条件和操作符,以及排序和分组等功能。

四、数据的更新与删除1. 更新数据:在已有的表中,可以使用SQLite提供的命令或者API,更新表中的数据。

更新数据时,需要指定要更新的表和字段,以及每个字段对应的新值。

可以使用各种条件和操作符,以确定要更新的数据行。

2. 删除数据:删除数据是使用SQLite的另一个常见操作。

通过使用SQLite提供的命令或者API,可以从表中删除满足特定条件的数据。

SQLite资料

SQLite资料

SQLite是一个开源的、内嵌式的关系型数据库。

它最初由D. Richard Hipp 发布于2000年,它的应用可减少应用程序管理数据的开销,在便携性、易用性、紧凑性、有效性和可靠性方面有突出的表现[9]。

体系架构:SQLite拥有一个精致的、模块化的体系结构,并引进了一些独特的方法进行关系型数据库的管理。

它由被组织在3个子系统中的8个独立的模块组成,如图3-1所示[9]。

这个模型将查询过程划分为几个不连续的任务,就像在流水线上工作一样。

在体系结构栈的顶部编译查询语句,在中部执行它,在底部处理操作系统的存储和接口。

图3-1 SQLite的体系架构接口(Interface):由SQLite 的C 语言API函数组成,也就是说不管是程序、脚本语言还是库文件,最终都是通过它与SQLite交互的。

一般来说,用户也是使用API函数来传递SQL语句的。

编译器(Compiler):编译过程从分词器(Tokenizer)和分析器(Parser)开始。

它们协作处理文本形式的结构化查询(Structured Query Language, SQL)语句,分析其语法有效性,转化为底层能更方便处理的层次数据结构——语法树,然后把语法树传给代码生成器(code generator)进行处理。

而代码生成器根据分析器生成一种SQLite专用的汇编代码,最后由虚拟机(Virtual Machine)执行。

虚拟机(Virtual Machine):架构中最核心的部分是虚拟机,或者叫做虚拟数据库引擎(Virtual DataBase Engine,VDBE)。

它和Java虚拟机相似,解释执行字节代码。

VDBE的字节代码(称为虚拟机语言)由128个操作码(opcodes)构成,主要是进行数据库操作。

它的每一条指令或者用来完成特定的数据库操作(比如打开一个表的游标、开始一个事务等),或者为完成这些操作做准备。

总之,所有的这些指令都是为了满足SQL命令的要求。

sqlite支持的数据类型详解

sqlite支持的数据类型详解

SQLite3 数据类型NULLINTEGERREALTEXTBLOB但实际上,sqlite3也接受如下的数据类型:smallint 16 位元的整数。

interger 32 位元的整数。

decimal(p,s) p 精确值和s 大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数点後有几位数。

如果没有特别指定,则系统会设为p=5; s=0 。

float 32位元的实数。

double 64位元的实数。

char(n) n 长度的字串,n不能超过254。

varchar(n) 长度不固定且其最大长度为n 的字串,n不能超过4000。

graphic(n) 和char(n) 一样,不过其单位是两个字元double-bytes,n不能超过127。

这个形态是为了支援两个字元长度的字体,例如中文字。

vargraphic(n) 可变长度且其最大长度为n 的双字元字串,n不能超过2000date 包含了年份、月份、日期。

time 包含了小时、分钟、秒。

timestamp 包含了年、月、日、时、分、秒、千分之一秒。

1.存储类别第二版把所有列的值都存储成ASCII文本格式。

第三版则可以把数据存储成整数和实数,还可以存储BLOB 数据.Each value stored in an SQLite数据库中存储的每个值都有一个属性,都属于下面所列类中的一种,(被数据库引擎所控制)NULL: 这个值为空值INTEGER: 值被标识为整数,依据值的大小可以依次被存储为1,2,3,4,5,6,7,8.REAL: 所有值都是浮动的数值,被存储为8字节的IEEE浮动标记序号.TEXT: 值为文本字符串,使用数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE).BLOB: 值是BLOB数据,如何输入就如何存储,不改变格式.像SQLite2.0版一样,在3.0版中,除了INTEGER PRIMARY KEY,数据库中的任何列都可以存储任何类型的数据.这一规则也有例外,在下面的"严格相似模式"中将描述.输入SQLite的所有值,不管它是嵌入SQL语句中的文字还是提前编译好的绑定在SQL语句中的值,在SQL语句执行前都被存储为一个类.在下面所描述的情况下,数据库引擎将在执行时检查并把值在数字存储类(整数和实数)和文本类间转换.存储的类别最初被分类为如下:具体的值比如SQL语句部分的带双引号或单引号的文字被定义为文本,如果文字没带引号并没有小数点或指数则被定义为整数,如果文字没带引号但有小数点或指数则被定义为实数,如果值是空则被定义为空值.BLOB数据使用符号X'ABCD'来标识.Values supplied using the 被输入的值使用sqlite3_bind_* APIs的被分类一个存储等级,这等级是和原来的类基本相一致的. (比如sqlite3_bind_blob()绑定一个BLOB的值).值的分类是SQL分等级操作的结果,决定于最远的操作表达式.用户定义的功能也许会把值返回任意的类.在编译的时候来确定表达式的存储类基本是不可能的.2. 列之间的亲和性在SQLite3.0版中,值被定义为什么类型只和值自身有关,和列没有关系,和变量也没有关系. (这有时被称作弱类型.)所有其它的我们所使用的数据库引擎都受静态类型系统的限制,其中的所有值的类是由其所属列的属性决定的,而和值无关.为了最大限度的增加SQLite数据库和其他数据库的兼容性,SQLite支持列的"类型亲和性". 列的亲和性是为该列所存储的数据建议一个类型.我们要注意是建议而不是强迫.在理论上来讲,任何列依然是可以存储任何类型的数据的. 只是针对某些列,如果给建议类型的话,数据库将按所建议的类型存储.这个被优先使用的数据类型则被称为"亲和类型".在SQLite3.0版中,数据库中的每一列都被定义为以下亲和类型中的一种:文本数字的整数无一个具有类型亲和性的列按照无类型,文本,或BLOB存储所有的数据.如果数字数据被插入一个具有文本类型亲和性的列,在存储之前数字将被转换成文本.一个具有数字类型亲和性的列也许使用所有的五个存储类型存储值.当文本数据被插入一个数字列时,在存储之前,数据库将尝试着把文本转换成整数或实数.如果能成功转换的话,值将按证书活实数的类型被存储. 如果不能成功转换的话,值则只能按文本类型存储了,而不会被转换成无类型或BLOB类型来存储.一个具有整数亲和力的列在转换方面和具有数字亲和力的列是一样的,但也有些区别,比如没有浮动量的实值(文本值转换的值)被插入具有整数亲和力的列时,它将被转换成整数并按整数类型存储.一个具有无类型亲和力的列不会优先选择使用哪个类型.在数据被输入前它不会强迫数据转换类型.2.1 列的亲和性的决定一个列的亲和类型是由该列所宣称的类型决定的.遵守以下规则:如果数据类型包括字符串"INT"那么它被定义成具有整数亲和性.如果列中的数据类型包括以下任何的字符串"CHAR", "CLOB", or "TEXT" 那么这个列则具有文本亲和性.要注意VARCHAR类型包括字符串"CHAR"因此也具有文本类型亲和性.如果一个列的数据类型包括字符串"BLOB"或者如果数据类型被具体化了,那么这个列具有无类型亲和性. 否则就具有数字类型亲和性.如果表格使用If "CREATE TABLE AS SELECT..."语句生成的,那么所有的列则都没有具体的数据类型,则没有类型亲和性.2.2 列的亲和性的例子CREATE TABLE t1(t TEXT,nu NUMERIC,i INTEGER,no BLOB);-- Storage classes for the following row:-- TEXT, REAL, INTEGER, TEXTINSERT INTO t1 VALUES('500.0', '500.0', '500.0', '500.0');-- Storage classes for the following row:-- TEXT, REAL, INTEGER, REALINSERT INTO t1 VALUES(500.0, 500.0, 500.0, 500.0);3.比较表达式像SQLite2.0版一样,3.0版的一个特性是二进制比较符'=', '<', '<=', '>=' and '!=',一个操作'IN'可以测试固定的成员资格, 三重的比较操作符'BETWEEN'.比较的结果决定于被比较的两个值的存储类型。

sqlite3 c++ 编译

sqlite3 c++ 编译

SQLite3简介1. SQLite3是一个轻量级的嵌入式关系型数据库管理系统,它被广泛应用于移动设备、嵌入式系统以及各种小型数据库应用中。

2. SQLite3是一个开源项目,它提供了一套小巧而强大的API,可以让开发者方便地操作SQLite3数据库。

3. 在C/C++编程中,SQLite3被广泛使用,因为它不需要独立的服务器进程,可以直接访问存储在普通磁盘文件中的数据库。

SQLite3的C/C++接口1. SQLite3提供了丰富的C/C++接口,开发者可以使用这些接口创建、管理和操作SQLite3数据库。

2. 在C++中,可以使用SQLite3的C语言接口,也可以使用一些封装了C接口的C++库,如SQLCPP11、sqlite_orm等。

3. C/C++接口提供了对数据库的增删改查等操作,同时还提供了事务处理、预编译SQL语句、数据绑定等高级功能。

SQLite3的编译和信息1. 在使用C++开发SQLite3数据库应用程序时,需要将SQLite3库文件编译到可执行文件中。

2. 在Unix/Linux环境下,可以使用gcc或g++来编译信息SQLite3库文件,命令如下:g++ -o my_program my_program.cpp -lsqlite33. 在Windows环境下,可以使用MinGW或Visual C++等编译工具来编译信息SQLite3库文件,命令如下:g++ -o my_program my_program.cpp -lsqlite3.dll示例代码下面是一个简单的C++程序,演示了如何编译和信息SQLite3库文件,并使用SQLite3接口操作数据库:```cpp// Include the SQLite3 header file#include <sqlite3.h>#include <iostream>int m本人n() {// Create a new SQLite3 database or open an existing onesqlite3* db;int rc = sqlite3_open("my_database.db", db);if (rc) {std::cerr << "Can't open database: " << sqlite3_errmsg(db)<< std::endl;return 1;} else {std::cout << "Opened database successfully" << std::endl;}// Create a SQL statementconst char* sql = "CREATE TABLE COMPANY(" \"ID INT PRIMARY KEY NOT NULL," \"NAME TEXT NOT NULL," \"AGE INT NOT NULL," \"ADDRESS CHAR(50)," \"SALARY REAL );";// Execute the SQL statementchar* errMsg;rc = sqlite3_exec(db, sql, 0, 0, errMsg);if (rc != SQLITE_OK) {std::cerr << "SQL error: " << errMsg << std::endl;sqlite3_free(errMsg);} else {std::cout << "Table created successfully" << std::endl; }// Close the databasesqlite3_close(db);return 0;}```总结1. 在C++编程中使用SQLite3需要编译信息SQLite3库文件,然后使用SQLite3提供的C/C++接口进行数据库操作。

sqlite3常用操作

sqlite3常用操作

sqlite提供的是一些C函数接口,你可以用这些函数操作数据库。

通过使用这些接口,传递一些标准sql 语句(以char * 类型)给sqlite 函数,sqlite 就会为你操作数据库。

sqlite 跟MS的access一样是文件型数据库,就是说,一个数据库就是一个文件,此数据库里可以建立很多的表,可以建立索引、触发器等等,但是,它实际上得到的就是一个文件。

备份这个文件就备份了整个数据库。

sqlite 不需要任何数据库引擎,这意味着如果你需要sqlite 来保存一些用户数据,甚至都不需要安装数据库。

下面开始介绍数据库基本操作。

1、基本流程(1)关键数据结构:sqlite 里最常用到的是sqlite3 * 类型。

从数据库打开开始,sqlite就要为这个类型准备好内存,直到数据库关闭,整个过程都需要用到这个类型。

当数据库打开时开始,这个类型的变量就代表了你要操作的数据库。

下面再详细介绍。

(2)打开数据库:int sqlite3_open( 文件名, sqlite3 ** ); 用这个函数开始数据库操作。

需要传入两个参数,一是数据库文件名,比如:..\\test\\testDatabase.db。

文件名不需要一定存在,如果此文件不存在,sqlite 会自动建立它。

如果它存在,就尝试把它当数据库文件来打开。

其中sqlite3 ** 参数即前面提到的关键数据结构。

这个结构底层细节如何,你不要关它。

函数返回值表示操作是否正确,如果是SQLITE_OK 则表示操作正常。

相关的返回值sqlite定义了一些宏。

具体这些宏的含义可以参考sqlite3.h 文件。

里面有详细定义。

(3)关闭数据库:int sqlite3_close(sqlite3 *); 前面如果用sqlite3_open 开启了一个数据库,结尾时不要忘了用这个函数关闭数据库。

sqlite数据库操作例子#include "./sqlite3.h"int main( int , char** ){sqlite3 * db = NULL; //声明sqlite关键结构指针int result;//需要传入db 这个指针的指针,//因为sqlite3_open 函数要为这个指针分配内存,还要让db指针指向这个内存区result = sqlite3_open("..\\test\\testDatabase.db", &db);//打开数据库if( result != SQLITE_OK ){return -1; //数据库打开失败}//数据库操作代码//…-//数据库打开成功sqlite3_close( db ); //关闭数据库return 0;}这就是一次数据库操作过程。

sqlite教程

sqlite教程

sqlite教程1:sqlite常用接口2个重要结构体和5个主要函数:sqlite3 *pdb, 数据库句柄,跟文件句柄FILE很类似sqlite3_stmt *stmt, 这个相当于ODBC的Command对象,用于保存编译好的SQL语句sqlite3_open(), 打开数据库sqlite3_exec(), 执行非查询的sql语句sqlite3_prepare(), 准备sql语句,执行select语句或者要使用parameter bind时,用这个函数(封装了sqlite3_exec). Sqlite3_step(), 在调用sqlite3_prepare后,使用这个函数在记录集中移动。

Sqlite3_close(), 关闭数据库文件还有一系列的函数,用于从记录集字段中获取数据,如sqlite3_column_text(), 取text类型的数据。

sqlite3_column_blob(),取blob类型的数据sqlite3_column_int(), 取int类型的数据…2:sqlite数据类型介绍在进行数据库Sql操作之前,首先有个问题需要说明,就是Sqlite的数据类型,和其他的数据库不同,Sqlite支持的数据类型有他自己的特色,这个特色有时会被认为是一个潜在的缺点,但是这个问题并不在我们的讨论范围之内。

大多数的数据库在数据类型上都有严格的限制,在建立表的时候,每一列都必须制定一个数据类型,只有符合该数据类型的数据可以被保存在这一列当中。

而在Sqlite 2.X中,数据类型这个属性只属于数据本生,而不和数据被存在哪一列有关,也就是说数据的类型并不受数据列限制(有一个例外:INTEGER PRIMARY KEY,该列只能存整型数据)。

但是当Sqlite进入到3.0版本的时候,这个问题似乎又有了新的答案,Sqlite的开发者开始限制这种无类型的使用,在3.0版本当中,每一列开始拥有自己的类型,并且在数据存入该列的时候,数据库会试图把数据的类型向该类型转换,然后以转换之后的类型存储。

SQLite数据库简介和使用

SQLite数据库简介和使用

SQLite数据库简介和使⽤⼀、Sqlite简介: SQLite (/),是⼀款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计⽬标是嵌⼊式的,⽽且⽬前已经在很多嵌⼊式产品中使⽤了它,它占⽤资源⾮常的低,在嵌⼊式设备中,可能只需要⼏百K的内存就够了。

它能够⽀持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语⾔相结合,⽐如 Tcl、C#、PHP、Java等,还有ODBC接⼝,同样⽐起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度⽐他们都快。

SQLite第⼀个Alpha版本诞⽣于2000年5⽉.⾄今已经有10个年头,SQLite也迎来了⼀个版本 SQLite 3已经发布。

⼆、Sqlite作者赠⾔: o May you do good and not evil. 愿你⾏善莫⾏恶 o May you find forgiveness for yourself and forgive others. 愿你原谅⾃⼰宽恕他⼈ o May you share freely, never taking more than you give. 愿你宽⼼与⼈分享,所取不多于你所施予三、Sqlite的命令: sqlite3 too.db 创建名为too的数据库,其后缀不⼀定⽤db .Help 求助 .quit 离开四、Sqlite的客户端⼯具: SQLiteExpertPers六、Sqlite的sql语句:建表:create table table_name(field1, field2, field3, ...); 例⼦:创建名为film的数据库表 create table film(_id Integer primaray key autoincrement , title, length, year, starring);注意:语句要以分号结尾,字段不⽤指定类型,它会适时的⾃动转换 可以存储⽂字、数字、⼤⽂本(blub)创建索引:create index index_name on table_name(field_to_be_indexed); 例⼦:针对表film的title字段创建名为film_title_index的索引 create index film_title_index on film(title); 注意:当表的数据较多时,索引能加快查询速度(前提是根据建有索引的字段查询)添加数据:insert into table_name(field1,field2,field3,...) values(data1, data2, data3, ...); 例⼦:向表film中添加⼀条记录 insert into film(title, length, year, starring) values('Contact',153,1997,'Jodie Foster'); 注意:可以省略语句中的字段名部分,前提是数据个数与字段个数⼀样 如果某个字段没有添加值则其值为null,也可⼿动添加null值查询数据:select columns from table_name where expression; 例⼦:从表film中查询数据 1 显⽰表⾥所有字段的所有数据 select * from film; 2 如果资料太多了,我们或许会想限制笔数: select * from film limit 10; 3 照着电影年份来排列: select * from film order by year limit 10; 4 年份⽐较近的电影先列出来: select * from film order by year desc limit 10; 5 我们只想看电影名称跟年份: select title, year from film order by year desc limit 10; 6 查所有茱蒂佛斯特演过的电影: select * from film where starring='Jodie Foster'; 7 查所有演员名字开头叫茱蒂的电影('%' 符号便是 SQL 的万⽤字符): select * from film where starring like 'Jodie%'; 8 查所有演员名字以茱蒂开头、年份晚于1985年、年份晚的优先列出、最多⼗笔,只列出电影名称和年份: select title, year from film where starring like 'Jodie%' and year >= 1985 order by year desc limit 10; 9 查看数据库⼀共有多少条记录: select count(*) from film; 10 查看1985年以后的电影有⼏部: select count(*) from film where year >= 1985;更新数据:update film set starring='Jodie Foster' where starring='Jodee Foster'; 把主⾓字段为'Jodee Foster'的所有记录改成Jodie Foster。

SQlite数据库的C编程接口(三)预处理语句(PreparedStatements)——。。。

SQlite数据库的C编程接口(三)预处理语句(PreparedStatements)——。。。

SQlite数据库的C编程接⼝(三)预处理语句(PreparedStatements)——。

SQlite3数据库连接完成之后,就可以执⾏SQL命令了。

下⾯将要介绍的prepare和step函数都是⽤来操作和执⾏SQL命令的。

典型的函数操作流程(伪代码):/* create a statement from an SQL string */sqlite3_stmt *stmt = NULL;sqlite3_prepare_v2( db, sql_str, sql_str_len, &stmt, NULL );/* use the statement as many times as required */while( ... ){/* bind any parameter values */sqlite3_bind_xxx( stmt, param_idx, param_value... );.../* execute statement and step over each row of the result set */while ( sqlite3_step( stmt ) == SQLITE_ROW ){/* extract column values from the current result row */col_val = sqlite3_column_xxx( stmt, col_index );...}/* reset the statement so it may be used again */sqlite3_reset( stmt );sqlite3_clear_bindings( stmt ); /* optional */}/* destroy and release the statement */sqlite3_finalize( stmt );stmt = NULL;这段程序⾸先调⽤sqlite3_prepare_v2函数,将⼀个SQL命令字符串转换成⼀条prepared语句,存储在sqlite3_stmt类型结构体中。

SQLite数据库管理指南

SQLite数据库管理指南

SQLite数据库管理指南第一章:SQLite简介与安装SQLite是一种轻量级、嵌入式的关系型数据库管理系统,它占用系统资源少、易于使用和维护。

在本章中,我们将介绍SQLite 的基本特性以及如何安装和配置它。

1.1 SQLite的特点SQLite具有以下特点:- 无服务器架构:SQLite是一种嵌入式数据库,不需要独立的服务器进程,可以直接在应用程序中使用。

- 零配置:SQLite不需要额外的配置或管理,数据库文件直接存储在磁盘上。

- 零维护:SQLite自动处理数据库的创建、重命名以及备份等操作。

- 跨平台:SQLite可以在不同的操作系统上运行,包括Windows、macOS和Linux等。

1.2 安装SQLite安装SQLite非常简单,只需要下载对应操作系统的预编译二进制文件,并将其添加到系统的PATH环境变量中即可。

也可以选择使用各种集成开发环境(IDE)来安装SQLite。

第二章:SQLite数据库操作在本章中,我们将介绍如何创建、删除、备份和还原SQLite数据库,并演示常见的SQL操作,如表的创建、插入、查询和更新等。

2.1 创建数据库通过SQLite的命令行工具或编程语言的SQLite API,可以创建一个新的SQLite数据库。

使用SQLite命令行工具的示例命令如下:```sqlite3 test.db```此命令将在当前目录下创建名为test.db的数据库文件,并进入SQLite控制台。

2.2 数据库备份与还原SQLite提供了命令行工具和API来备份和还原数据库。

使用命令行工具的示例命令如下:```sqlite3 test.db .backup backup.db```此命令将备份test.db数据库到名为backup.db的文件中。

2.3 数据库表操作SQLite使用SQL语言来操作数据库表。

以下是一些常见的表操作示例:- 创建表:```CREATE TABLE students (id INTEGER PRIMARY KEY, name TEXT, age INTEGER);```- 插入数据:```INSERT INTO students (name, age) VALUES ('John', 20);```- 查询数据:```SELECT * FROM students;```- 更新数据:```UPDATE students SET age = 21 WHERE name = 'John';```第三章:SQLite性能优化SQLite虽然是一个轻量级数据库,但在大数据量和高并发的情况下,也需要进行性能优化。

sqlite3数据类型和范围

sqlite3数据类型和范围

sqlite3数据类型和范围SQLite是一种嵌入式关系型数据库管理系统,支持多种数据类型。

数据类型在定义数据表结构时起着关键作用,决定了所能存储的数据范围和操作的规则。

下面将详细介绍SQLite3所支持的数据类型及其范围。

1. NULL类型: NULL类型是用于表示缺少值或未知值的特殊类型,可以赋值给任何其他数据类型。

2. INTEGER类型: INTEGER类型用于存储整数值,可以是有符号的或无符号的。

SQLite采用的是动态类型系统,INTEGER类型的数据可以存储1、2、4、6或8个字节的整数值,范围为-9223372036854775808到9223372036854775807(8个字节)或0到18446744073709551615(无符号)。

3. REAL类型: REAL类型用于存储浮点数值,即带有小数的数值。

它采用8字节的IEEE浮点表示,范围为-1.0e+308到+1.0e+308。

4. TEXT类型: TEXT类型用于存储字符串值,可以存储最长为2^31-1个字符的文本。

SQLite不区分大小写,因此在比较文本时,大小写不敏感。

5. BLOB类型: BLOB类型用于存储二进制数据,可以存储最长为2^31-1个字节的数据。

它可以用于存储图像、音频、视频等非文本数据。

除了以上常见的数据类型,SQLite还提供了以下几种特殊的数据类型:6. NUMERIC类型: NUMERIC类型用于存储数字值,可以是整数或浮点数。

它可以根据具体的值自动调整为INTEGER或REAL类型。

7. BOOLEAN类型: BOOLEAN类型用于存储布尔值,可以是True或False。

8. DATE类型: DATE类型用于存储日期值,格式为YYYY-MM-DD。

9. TIME类型: TIME类型用于存储时间值,格式为HH:MM:SS。

10. DATETIME类型: DATETIME类型用于存储日期和时间值,格式为YYYY-MM-DD HH:MM:SS。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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
相关文档
最新文档