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 更新数据的写法
ContentValues values = new ContentValues();   
values.put(“name”, “大明”);//key为字段名,value为值   
db.update("person", values, "perid=?", new String[]{"1"});  
 
这是简单的增删改,查牵涉内容较多,下一篇再介绍

你可能感兴趣的:(Android,知识)