数据库是android的一个存储工具,貌似地位有点尴尬,小的应用基本上用到的不多,因为一些app数据量小,sql占内存;一些app比较粗糙,数据没用到缓存;还有就是有DiskLruCache等缓存;一般用到sql的都是比较大的应用和数据稍微复杂的应用,sql要想深入需要花费大功夫,现在简单讲讲sql。

SQLite可以把各种类型的数据保存到任何字段中,不用关心字段声明的数据类型是什么。可以在Integer类型的字段中存放字符串,或者在布尔型字段中存放浮点数。一种情况例外:定义为INTEGER PRIMARY KEY的字段只能存储 64位的整数,当向这种字段保存其他数据时,会产生错误。

创建数据库,需要用一个类继承SQLiteOpenHelper,同时实现三个方法,构造方法,onCreate方法,onUpgrade方法。数据库的名字和版本号由构造方法里的参数控制,数据库表格的名字由onCreate方法控制,数据库升级时需要新增表格时由onUpgrade方法方法控制,各司其职。其中比较重要的就是表格的创建,一般写法如下

@Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE IF NOT EXISTS person (perid integer primary key, name varchar(20), age INTEGER)");
        Log. e("Database" ,"onCreate" );
    }

创建出一个表格,名字为person,里面包含两个属性,名字和年龄,如何增删改查呢?下面先说说简单的
首先,通过 getWritableDatabase()或getReadableDatabase()方法,拿到该数据库SQLiteDatabase db,然后通过sql语句,进行增加操作,注意原始的sql语句写法
db.execSQL("insert into person(name, age) values('小明', 14)");
这样就往person表格中加入一条记录,上述sql语句有语法限制,譬如需要转义,所以可以改进写法,
db.execSQL("insert into person(name, age) values(?,?)", new Object[]{"小明", 14});
这样,各种字符包括特殊符号都可以录入表格中了。


删除的话,为
db.execSQL("delete from person WHERE perid=1", new Object[]{1});
或者
db.execSQL("delete from person WHERE perid=?", new Object[]{1}); 
更新的话,为
db.execSQL("update person set name=‘小明‘,age = 14 where perid=1 "); 
或者为
b.execSQL("update person SET name =?,age=? WHERE perid=?", new Object[]{"小明", 14,1}); 


以上的方法,是用sql语句来写,这样写比较麻烦,并且容易出错,android有种同等功效的写法,就是用ContentValues 来代替
比如说插入数据,可以用下面写法
ContentValues values = new ContentValues();  
values.put("name", "小明");  
values.put("age", 14);  
long rowid = db.insert(“person”, null, values);//返回新添记录的行号,与主键id无关
删除的有种一次删除多条数据的写法
db.delete("person", "perid<?", new String[]{"2"});  perid小于2的数据都会被删除
更新数据的写法
ContentValues values = new ContentValues();   
values.put(“name”, “大明”);//key为字段名,value为值   
db.update("person", values, "perid=?", new String[]{"1"});  
 
这是简单的增删改,查牵涉内容较多,下一篇再介绍

更多相关文章

  1. [Android]如何做一个崩溃率少于千分之三噶应用app(10)-ModuleBus交
  2. Android(安卓)Studio Jni开发(二)实现Native调用java方法和Native
  3. 百度Android语音合成(TTS)SDK使用方法
  4. Android(安卓)用groovy在gradle自定义字段方法实现一键切换versi
  5. Android(安卓)8.0 SystemUI 源码分析(二):启动流程和初始化
  6. Android中AsyncTask使用教程及源码分析
  7. Android(安卓)RecyclerView中ViewHolder的复用导致数据错乱解决
  8. Android(安卓)手机app三种方法获取定位地址(自带API,外接SDK,获取外
  9. android笔记一:java内部类

随机推荐

  1. MySql5.x升级MySql8.x的方法步骤
  2. mysql存储过程之返回多个值的方法示例
  3. MySql Installer 8.0.18可视化安装教程图
  4. mysql存储过程之创建(CREATE PROCEDURE)和
  5. mysql存储过程之引发存储过程中的错误条
  6. Linux下安装MySQL8.0.11的教程
  7. CentOS7下 MySQL定时自动备份的实现方法
  8. mysql 8.0.18各版本安装及安装中出现的问
  9. Windows下mysql-5.7.28下载、安装、配置
  10. Linux下修改MySQL数据库数据文件路径的步