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. JAVA设计模式之Template method
  2. android 图片旋转 反锯齿
  3. Kotlin初体验(一)-引入Android(安卓)Studio
  4. Android开源:数据库ORM框架GreenDao学习(二)数据库查询篇
  5. Instant Run详解
  6. 《一》Android(安卓)数据库 SQlite SQLiteOpenHelper
  7. Android(安卓)Mini音乐播放器[简单版本]
  8. 你真的懂Handler吗?Handler问答
  9. Android中的Service详解

随机推荐

  1. MySQL数据类型中DECIMAL的用法实例详解
  2. MySQL如何查看元数据锁阻塞在哪里
  3. JDBC连接mysql处理中文时乱码解决办法详
  4. linux/mac安装mysql忘记密码的解决办法
  5. MySQL操作之JSON数据类型操作详解
  6. Windows下Mysql启动报1067的解决方法
  7. MySQL分区字段列有必要再单独建索引吗?
  8. Ubuntu下MySQL安装及配置远程登录教程
  9. MySQL 清除表空间碎片的实例详解
  10. navicat不能创建函数解决方法分享