安卓开发:Android创建和使用数据库详细指南 |
|
数据库 支撑每个 利用程序无论大小的生命线,除非你的 利用程序只 解决 方便的数据,那么就需求一个数据库系统存储你的 构造化数据,Android 使用SQLite数据库,它是一个开源的、 支撑多操作系统的SQL数据库,在许多领域 宽泛 使用,如Mozilla FireFox便是 使用SQLite来存储配置数据的,iPhone也是 使用SQLite来存储数据的 。 在Android中,你为某个 利用程序 缔造的数据库,惟独它 可以 拜访,其它 利用程序是不能 拜访的,数据库位于Android 设施/data/data/ /databases文件夹中,在这篇文章中,你将会学习到如何在Android中 缔造和 使用数据库 。 SQLite数据库 使用Eclipse 缔造一个Android 名目,取名为Database,如图1所示: 图1 数据库- 使用Eclipse 缔造你的Android新 名目 缔造DBAdapter辅助类 操作数据库的最佳 实际是 缔造一个辅助类,由它封装全部对数据库的复杂 拜访,关于调用代码而言它是透明的, 因此我 缔造了一个DBAdapter的辅助类,由它 缔造、 打开、关闭和 使用SQLite数据库 。 首先,在src/ 在DBAdapter.java文件中,导入全部你要 使用到的命名空间:
接下来 缔造一个数据库,取名为bookstitles,字段如图2所示 。 图2 数据库字段 在DBAdapter.java文件中,定义清单1中的常量 。 清单1 定义DBAdapter.java文件中的常量
package net.learn2develop.Database; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class DBAdapter { public static final String KEY_ROWID = _id; public static final String KEY_ISBN = isbn; public static final String KEY_TITLE = title; public static final String KEY_PUBLISHER = publisher; private static final String TAG = DBAdapter; private static final String DATABASE_NAME = books; private static final String DATABASE_TABLE = titles; private static final int DATABASE_VERSION = 1; private static final String DATABASE_CREATE = create table titles (_id integer primary key autoincrement, + isbn text not null, title text not null, + publisher text not null);; private final Context context; } DATABASE_CREATE常量包含 缔造titles表的SQL语句 。 在DBAdapter类中,你 可以 扩大SQLiteOpenHelper类,它是一个Android辅助类,重要用于数据库 缔造和版本治理 。实际上,你 可以 遮蔽onCreate()和onUpgrade() 步骤,如清单2所示 。 清单2 在DBAdapter类中, 扩大SQLiteOpenHelper类 遮蔽onCreate() 和 onUpgrade() 步骤
package net.learn2develop.Database; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class DBAdapter { public static final String KEY_ROWID = _id; public static final String KEY_ISBN = isbn; public static final String KEY_TITLE = title; public static final String KEY_PUBLISHER = publisher; private static final String TAG = DBAdapter; private static final String DATABASE_NAME = books; private static final String DATABASE_TABLE = titles; private static final int DATABASE_VERSION = 1; private static final String DATABASE_CREATE = create table titles (_id integer primary key autoincrement, + isbn text not null, title text not null, + publisher text not null);; private final Context context; private DatabaseHelper DBHelper; private SQLiteDatabase db; public DBAdapter(Context ctx) { this.context = ctx; DBHelper = new DatabaseHelper(context); } private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(DATABASE_CREATE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w(TAG, Upgrading database from version + oldVersion + to + newVersion + , which will destroy all old data); db.execSQL("DROP TABLE IF EXISTS titles"); onCreate(db); } } } onCreate() 步骤 缔造一个新的数据库,onUpgrade() 步骤用于 晋级数据库,这 可以通过 审查DATABASE_VERSION常量定义的值来实现,关于onUpgrade() 步骤而言,只是是 方便地删除表, 而后在 缔造表而已 。
|