android实验二数据库,Android 数据存取试验 (二)

这篇博客介绍了如何在Android应用中使用SQLite数据库,包括通过openOrCreateDatabase方法创建或打开数据库,以及在应用生命周期结束时关闭数据库和删除数据库文件。作者通过Java代码展示了创建SQLite数据库的过程,并通过LogCat观察操作效果,验证了数据库的创建和关闭。
摘要由CSDN通过智能技术生成

学习文件I/O操作,不学习一下数据库操作,是不是很不完美。

那么就把试验进行到底。

继续参考上一个试验的那本书完成SQLite的第一个试验,希望我在今天睡觉前能完成。

etc_01.gif

SQLite 数据库介绍

当应用程序需要处理的数据量比较大时,为了更加合理地存储、管理、查询数据,我们往往使用关系数据库来存储数据。Android平台为开发者提供了SQLite数据库相关的API来实现对数据库操作的支持,开发人员可以很方便地使用这些API来对SQLite数据库进行创建、修改及查询等操作。Android系统的很多用户数据,如联系人信息、通话记录、短信息等,都是存储在SQLite数据库当中的,所以利用操作SQLite数据库的API可以同样方便地访问甚至修改这些数据。

SQLite是D. Richard Hipp用C语言编写的开源嵌入式数据库引擎。它是完全独立的,不具有外部依赖性。SQLite非常健壮,其创建者保守地估计SQLite可以处理每天多达100 000次点击率的Web站点,有时候甚至可以处理上述数字的10倍负载。最重要地,SQLite是一个轻量级的数据库, 在一些简单语句的处理性能上比Mysql或Postgresql都要快。对于内存有限的Android手持设备而言,当然是对时间空间要求越低的数据库引擎越好。

从功能上看,SQLite支持多数SQL92标准,可以在所有主流的操作系统上运行,并且支持大多数计算机语言。其数据库单文件的特性也使得在Android中操纵数据库更加灵活,另外SQLite特有的内存数据库还会在某些特殊的情况下发挥奇妙的作用。更多有关SQLite数据库的内容,请访问SQLite官方网站:http://www.sqlite.org/。

操作步骤:

1、创建/打开SQLite 数据库

要创建或打开一个SQLite数据库,可以直接调用SQLiteDatabase的静态方法:SQLite-Database openDatabase (String path,SQLiteDatabase.CursorFactory factory,intflags),来打开文件系统中位于绝对路径path的数据库。可以给出一个CursorFactory对象factory用于查询时构造Cursor的子类对象并返回,或者传入null使用默认的factory构造。参数flags用于控制打开或创建的模式,多个模式组合用|隔开,flags可用的值均为SQLiteDatabase类中定义的整型常量。

OPEN_READONLY,以只读的方式打开数据库。

OPEN_READWRITE,以可读写的方式打开数据库。

CREATE_IF_NECESSARY,当数据库不存在时,创建数据库。

NO_LOCALIZED_COLLATORS,打开数据库时,不根据本地化语言对数据进行排序。另外,还可以调用方法SQLiteDatabase openOrCreateDatabase (String path,SQLite-Database.CursorFactory factory) , 等同于调用openDatabase(path, factory,CREATE_IF_NECESSARY)。因为创建SQLite数据库也就是在文件系统中创建一个SQLite数据库的文件,所以应用程序必须对创建数据库的目录必须有可写的权限,否则会抛出SQLite-Exception异常。

除了在文件系统中创建SQLite数据库,Android还支持SQLite内存数据库。在某些需要临时创建数据库,并且对操作速率相对要求较高的情况下,SQLite内存数据库就发挥作用了。要在内存中创建一个SQLite数据库只需要调用SQLiteDatabase的静态方法SQLiteDatabase create(SQLiteDatabase.CursorFactory factory)就可以了。若创建成功会返回创建的SQLite内存数据库的对象,否则会返回null。

2、关闭SQLite 数据库

不管用何种方式打开了数据库,获得的SQLiteDatabase对象不再使用时(如程序退出时),都要调用close()方法来关闭打开的数据库,否则会抛出IllegalState-Exception异常。

这个实验比较简单,直接Java代码贴上即可。

package com.penguin7.sqlite;

import android.app.Activity;

import android.database.sqlite.SQLiteDatabase;

import android.os.Bundle;

import android.util.Log;

public class SQLiteTest extends Activity {

private final String TAG = "SQLLOG";

private final String DBNAME = "test.db";

private SQLiteDatabase test = null;

private String amount = null;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

amount = String.valueOf(databaseList().length);

Log.d(TAG, "before database is created: "+amount);

this.test = openOrCreateDatabase(DBNAME, MODE_PRIVATE, null);

amount = String.valueOf(databaseList().length);

Log.d(TAG, "after database is created: "+amount);

}

@Override

public void onDestroy(){

super.onDestroy();

this.test.close();

deleteDatabase(DBNAME);

amount = String.valueOf(databaseList().length);

Log.d(TAG, "after the activity life is over:"+amount);

}

}

好,实际跑一下,看看有没有完成创建和关闭数据的效果。

先对LogCat做个过滤标签:

2d19386514ad117be3671c1f9eaf075a.png

启动程序数据库从无到有:

eb8ac562081549308adb233ffb356e35.png

结束程序生命周期前关闭数据库:

39a0271a0bad3ef7bfa76882f01cbf3c.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值