android slqlite权限,Android SQLite 应用详解

Android、iPhone等都使用SQLite作为数据库引擎,所以我们就需要掌握一些的SQLite的应用。

SQL数据类型

一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断。

SQLite具有以下五种数据类型:

数据类型

解释

NULL

空值

INTEGER

带符号的整型,具体取决有存入数字的范围大小。

REAL

浮点数字,存储为8-byte IEEE浮点数

TEXT

字符串文本。

BLOB

二进制对象。

基本的SQL语句

1. 创建表

primary key:主键

autoincrement:自增型变量

if not exists :如果创建的表存在就不在创建

"create table if not exists 表名 (id integer primary key autoincrement, 列名1,列名2, 列名3)"

2. 增(插入)

"insert into 表名(列名1,列名2,列名3) values(?,?,?)", new Object[]{列名1的值, 列名2的值, 列名3的值}

3. 删

"delete from person where 列名 = ?",new String[]{删除条件}

4. 改(更新)

"update person set 修改的列名 = ? where 修改的列名 = ?", new String[]{原来的值, 修改的值}

5. 查

"select * from person where 查询的列名 like ?",new String[]{条件}

6.删除表

drop table if exists 表名

7.清空表

delete from if exists 表名

基本使用

1.获取SQLiteDatabase对象

SQLiteDatabase database = this.openOrCreateDatabase("person", MODE_PRIVATE, null);

2.创建数据表

database.execSQL("create table person (id integer primary key autoincrement, name, age, sex)");

3.插入三行数据

database.execSQL("insert into person(name,age,sex) values(?,?,?)", new Object[]{"小红", 18, "女"});

database.execSQL("insert into person(name,age,sex) values(?,?,?)", new Object[]{"小明", 22, "男"});

database.execSQL("insert into person(name,age,sex) values(?,?,?)", new Object[]{"小王", 25, "男"});

4.修改数据

database.execSQL("update person set name = ? where name = ?", new String[]{"小明", "小红"});

5.查询数据

注:一般通过cursor来得到查询数据,而且调用rawQuery来查询

Cursor cursor = database.rawQuery("select * from person where name like ?",new String[]{"小明"});

//实例化一个对象

ArrayList> list = new ArrayList<>();

//循环取值

while (cursor.moveToNext()){

//获取数据

String name = cursor.getString(1); //列按照从0开始算,1指的是name列

String name = cursor.getString(cursor.getColumnIndex("name"));//或者可以这样写

//实例化map对象

Map map = new HashMap<>();

//添加值

map.put("name",name);

//将map对象添加list中

list.add(map);

}

6.删除数据

database.execSQL("delete from person where name = ?",new String[]{"小明"});

一般使用

一般情况下,我们都会新建一个类继承SQLiteOpenHelper,在其封装增删改查四种方法。

在onCreate方法中,写创建表

在onUpgrade方法中,它会根据版本号来更新表

在封装方法时,记得传SQLiteDatabase的对象,因为所有对表的操作都是通过它来的

public class MySQL extends SQLiteOpenHelper {

public MySQL(Context context, String name,SQLiteDatabase.CursorFactory factory, int version) {

super(context, name, factory, version);

}

@Override

public void onCreate(SQLiteDatabase db) {

//创建表

db.execSQL("create table person (id integer primary key autoincrement, name, age, sex)");

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

{

switch(newVersion){

case 1: db.execSQL(第一个版本的建表语句);

case 2: db.execSQL(第二个版本的建表语句);

case 3: db.execSQL(第三个版本的建表语句);

}

}

使用时

//实例化封装的SQL类

MySQL mySQL = new MySQL(this, "dataCache.db", null, 1);

//通过mySQL获取SQLiteDatabase对象

SQLiteDatabase database = mySQL.getWritableDatabase();

//之后通过mySQL调用封装方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值