sqlite只能用于android系统,android SQLite

SQLite是Android内嵌的一个数据库,用于存储大量的数据,其特点是轻量级,占用内存很少,不需要安装,多有的数据都包含在一个文件中,多个平台只需拷贝数据库文件就可直接使用,默认只能本应用访问,app卸载时会一同被卸载。

存储路径:/data/data/包名/databases/xx.db

SQLite管理工具:可视化的数据库管理工具,推荐SQLite Expert Professional,

下载地址:http://www.sqliteexpert.com

主键:_id integer primary key autoincrement  表示设置_id为主键并自增

数据库类型

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数据块,以输入的数据格式进行存储。如何输入就如何存储,不改  变格式。

BINARY:用于保存图片,对应字节数组byte[]

DATA :包含了 年份、月份、日期。

TIME: 包含了 小时、分钟、秒

SQLiteDatabase

SQLiteDatabase代表一个数据库对象,数据库的核心类之一,针对数据操作的主要类,主要对数据库的表的创建,增删改查等动作,其方法:

b9f920458c57

SQLiteDatabase除了本身的insert,update,delete等操作语句,还有两个同样可以进行数据的操作。

executeSQL(String sql, Object[] bindArgs);// 执行语句的增删改,并不是用于查询

rawQuery(String sql, String[] selectionArgs);查询语句,返回Cursor对象

常用增删改查语句

创建表:db.execSQL("create table wdply(_id integer primary key autoincrement,name varchar ,age int,sex varchat,tel varchar)");

增:db.execSQL("insert into wdply values(null,?,?,?,?)", newObject[]{"小明",1,"男","159"});

删:db.execSQL("delete from wdply where name=?", newObject[]{"小明"});

改:db.execSQL("update wdply set sex=? where name=?", newObject[]{"女","小明"});

查:Cursor cursor = db.rawQuery("select * from wdply", null);

Cursor对象

查询语句时,返回cursor对象,用于读取查询到的数据,cursor对象常用的方法:

b9f920458c57

SQLiteOpenHelper

是抽象类,子类必须继承SQLiteOpenHelper,并实现其连个抽象方法:

onUpgrade(SQLiteDatabasedb, int oldVersion, int newVersion)

SQLiteDatabase会自动检测数据库文件是否存在,如果数据库存在,会打开这个数据库,在这种情况下并不会执行onCreate()方法,如果数据库文件不存在,则会创建一个数据库,并打开这个数据库,最后执行onCreate方法,因此,onCreate方法一般用来在新创建的数据库中建立表,视图等数据库组件,也就是说onCreate方法在数据库第一次创建的时候调用。

数据库创建会有一个初始化版本为1,数据库升级时需增大这个版本号,这是SQLiteDatabase会调用OnUpgrade方法,调用完后系统会更新数据库版本号,因此在OnUpdate方法中一般先删除要升级的表,视图等,然后在创建他们。

总结:如果数据库文件不存在,只有onCreate方法被调用,(该方法只会被调用一次),如果数据库文件存在,并且当前版本较高,执行onUpgrade方法更新数据库,并更新版本号。

Android使用getWritableDatabase()和getReadableDatabase()方法都可以获取一个用于操作数据库的SQLiteDatabase实例。(getReadableDatabase()方法中会调用getWritableDatabase()方法)

其中getWritableDatabase()方法以读写方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写,倘若使用的是getWritableDatabase()方法就会出错。

getReadableDatabase()方法则是先以读写方式打开数据库,如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库。如果该问题成功解决,则只读数据库对象就会关闭,然后返回一个可读写的数据库对象

demo样例:

b9f920458c57

b9f920458c57

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值