第五章 以数据为中心—数据存取(4)

来源:互联网 发布:罗密欧点 知乎 编辑:程序博客网 时间:2024/05/06 15:14

5.2 通用的数据操作方式—数据库

说到数据的存取,数据库肯定是一个常用的解决方案。Android中也有它自己的数据库,下面我们来看看Android中的数据库与一般的数据库有什么不一样的地方。

5.2.1SQLite数据库介绍

目前在Android系统中集成的是SQLite3版本,它支持SQL语句,它是一个轻量级的嵌入式数据库。SQLite支持NULL、INTEGER、REAL、TEXT和BLOB数据类型,不支持静态数据类型,而是使用列关系。可以把SQLite数据库近似看成是一种无数据类型的数据库,你可以把任何类型的资料存放在非Integer类型的主键之外的其他字段上去(字段的长度也是没有限度的)。不过建议一定要在编写SQL语句的时候,按照标准的SQL语法,因为这样在别人看你的代码时候,便于更好的理解。

SQLite的官方网站是htt://www.sqlite.org/,登陆该网站可以了解更多的关于SQLite的信息。

在Android开发中,一个SQLiteDatabase的实例代表了一个SQLite 的数据库,通过SQLiteDatabase 实例的一些方法,我们可以执行SQL 语句,对数据库进行增、删、查、改的操作。需要注意的是,数据库对于一个应用来说是私有的,并且在一个应用当中,数据库的名字也是惟一的。下面的章节我们会详细说明数据库的操作。

 

经验分享:

数据库存储的位置在data/data/<项目文件夹>/databases/。有的时候我们可能需要查看数据库中的内容,这个时候我们可以将其拷贝出来,然后使用数据库工具进行查看。

另外,文件做为一个存储的载体,在大部分时候是有效的,但在某些情况下,文件存储会有问题,需要特别注意:

1)如果多线程数据访问是相关的。

2)如果应用程序处理可能变化的复杂数据结构。

 

5.2.2创建并打开数据库

我们要对数据库进行操作,那么首先要打开一个数据库,这里要用到一个类:android.database.sqlite.SQLiteOpenHelper。它封装了如何打开一个数据库,其中当然也包含如果数据库不存在就创建这样的逻辑。

// import略

public class DBOpenHelper extends SQLiteOpenHelper { 

 

    public static final String DATABASE_NAME = "myDataBaseName"; 

    public static final int DATABASE_VERSION = 1 ; 

    public static final String TABLE_NAME = "myTableName"; 

 

    public DBOpenHelper(Context context) {

        super (context, DATABASE_NAME, null , DATABASE_VERSION); 

    }

    @Override 

           public void onCreate(SQLiteDatabase db) { 

        db.execSQL("CREATE TABLE "+ TABLE_NAME 

        + " (_id integer primary key autoincrement, name text);"); 

    }

    @Override 

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

        db.execSQL("DROP TABLE IF EXISTS notes"); 

        onCreate(db);

    }

}

 

--------------------------------------------
程序员赚钱不易 一定要学会理财
平安陆金所 隶属于平安集团的p2p平台
年投资回报率7%-9% 是替代银行理财的首选
个人经验 推荐投资安鑫或者有担保的彩虹项目
不要投资安e 那个几乎无法转让 想提前提现非常困难
网站链接 http://affiliate.lufax.com/action/36XBU
首次投资1000元即可额外赚几百元 不赚白不赚
--------------------------------------------

下面对上述代码做一些说明。

onCreate(SQLiteDatabase):在数据库第一次生成的时候会调用这个方法,一般我们在这个方法里边生成数据库表。

onUpgrade(SQLiteDatabase,int, int) :当数据库需要升级的时候,Android 系统会主动的调用这个方法。一般我们在这个方法里边删除数据表,并建立新的数据表,当然是否还需要做其他的操作,完全取决于应用的需求。

除了上述两个方法以外,还有onOpen(SQLiteDatabase)可能也会用到,这是当打开数据库时的回调函数。

1 1