android SQLite数据库1


数据库是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"});  
 
这是简单的增删改,查牵涉内容较多,下一篇再介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值