1.为什么要用SQLite
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
SQLite便携性强,无需开启服务 ,体积小,无需配置,支持事物管理的轻量级数据库,库文件不到350K ,占用内存少,官方给的数据是占用堆内存只有4~100K,又因为是开源的,所以嵌入式,要求体积小的领域用途很广,比如android系统,IOS系统等都采用了SQLite做为数据库。
它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。
2.什么是SQLite
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。
3.如何创建数据库和数据表
1 SQLite简介
(1)SQLite 轻量级数据库,对多数用户仅仅表现为数据库文件而已占用资源非常低,占用的内存空间可能只需要几百KB,多用于嵌入式产品执行效率高,
(2)SQLite数据库相当于是每个应用的私有数据,应用程序卸载,对应的SQLite文件也被删除,
(3)SQLite是无类型的:即在创建数据库表时可用不用指定字段(列)的数据类型任意数据类型的数据都可以保存到任意的字段(列)中,但仍然强烈推荐开发人员在创建数据表时指定数据类型,并合理的填充数据,以便于开发人员之间的交流,及可能存在的数据库引擎更换
2 创建数据库和数据表
创建数据库的方式有:
(1)调用openOrCreateDatabase()方法;(不常用)
(2)扩展SQLiteOpenHelper类
方法一openOrCreateDatabase()
・调用ContextWrapper类定义的openOrCreateDatabase()方法即可打开或创建数据库,即:
如果指定的数据库不存在,则先创建它,然后再打开;
该方法的签名如下:
public SQLiteDatabase openOrCreateDatabase(String name,int mode,CursorFactory factory)
参数 1数据库文件名xxx.db,
参数2 文件的操作类型
参数3游标工厂,暂时不需要传入null就行
SQLiteDatabase类
・SQLiteDatabase类是在Android系统中用于执行各种相关操作的类,例如创建数据表,对数据进行增删改查,执行事务等。调用该类的execSQL()方法执行无需返回结果的SQL指令,该方法签名,如下:
public void execSQL(String sql) throws SQLException
创建数据表:
创建数据表:
・使用一般的创建数据表的SQL语法即可创建数据表,如果表名,字段名可
能与关键字冲突,可使用方括号:
CREATE TABLE [students](
[_age] INT NOT NULL DEFAUL 15
)
方法二 扩展SQLiteOpenHelper类(抽象类)
・使用SQLiteOpenHelper类的相关方法也可以获取SQLiteDatabase类的对象,以实现数据表,数据的相关操作;
・SQLiteOpenHelper可更方便的实现数据库的初始化,版本更新等问题。
・SQLiteOpenHelper类是抽象类,并且没有无参的构造方法,因此,开发人员定义其子类时,需要在子类的构造方法中显示的调用给构造方法;
・构造方法签名:
public SQLiteOpenHelper(Context context,String name,CursorFactory factory,int version)
1,上下文对象
2,数据库文件名
3 游标
4 版本(应该一次比一次大,新版本要比老版本数值要大)
・调用SQLiteOpenHelper类的如下方法可获取SQLiteDatabase对象:
子类继承扩展SQLiteOpenHelper类,子类的对象只有调用上面这两个方法中的任意一个
之后才有可能执行子类中的构造方法和重写的方法
(注意区别:getReadableDatabase()扔尝试获取一个可执行写操作的数据库访问对象
(等效于getWritableDatabase()方法)),仅当出现意外时,例如磁盘空间已满,
则获取只读的数据库访问对象。
・当第一次调用以上方法时,onCreate(),onUpgrade()方法可能被调用,
而这两个方法可能耗时比较长的执行时间,因此并不推荐在主线程中调用
以上方法
第一步
重写里面的构造方法和方法
- package
- import
- import
- import
- import
- publicclassextends
- /*
- public
- super"tarena2.db"null1
- @Override
- publicvoid
- //创建数据库表students表
- ")"
- @Override
- publicvoidintint
第二步:在MainActivity中
- package
- import
- import
- import
- import
- publicclassextends
- @Override
- protectedvoid
- super
- newthis
- /*
4.如何添加数据
5.如何删除数据
6.如何修改数据
步骤1: 采用用SqliteStudio修改数据:
步骤2: 启动SublimeText,编写Py文件如下:
UpdateDemo-1.py 及 UpdateDemo-2.py 如下:
- import
- 'htxx.db'
- sql=
- print(
- cursor.execute(''
- print(
- import
- def
- forin
- 1],item[3],item[0],item[2
- 'htxx.db'
- 'majianbo','majianbo','math',66.88
- sql=
- print(
- print(