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<Map<String,Object>> list = new ArrayList<>();                
//循环取值                
while (cursor.moveToNext()){                    
//获取数据                   
String name = cursor.getString(1); //列按照从0开始算,1指的是name列
String name = cursor.getString(cursor.getColumnIndex("name"));//或者可以这样写
//实例化map对象                    
Map<String,Object> 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调用封装方法
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,805评论 18 399
  • 前言 本文参考转发摘自:【郭霖博客】http://blog.csdn.net/guolin_blog?viewmo...
    _猜火车_阅读 6,011评论 0 10
  • LZ-Says:给大家推荐一个网站,有兴趣可以查阅,想为大家贡献一点自己的力量也可以投稿,老大审核通过会发表,更好...
    静心Study阅读 1,006评论 0 3
  • 最美不过人家四月天、作为瑜伽人更需要将瑜伽和季节搭配的惟妙惟肖!如在春暖花开的季节与大自然融为一体让瑜伽介入。 草...
    曼柔瑜伽阅读 413评论 1 6
  • 大自然的色彩,实在太奇妙了!今天和灰哥午饭后抽空去公园散了散步,虽然云层还是很厚,但太阳依然溜缝儿露了露脸,阳光下...
    小食光阅读 305评论 2 0