Android数据库在实际应用中占据着重要的角色。我们会通过本文给出的一段代码示例来对此进行详细的解读,方便大家学习。
在手机系统领域中,谷歌的Android操作系统算 是一个新起之秀。但是其优秀的性能以及开源性,使其一经推出就伸手广大用户的好评。在这里我们可以从Android数据库的相关操作来体验这一系统给我们 带来的好处。
Android 输出Log相关应用技巧剖析
Android 本地广播相关操作分析
Android Widget工具箱
Android 菜单系统基本概念详解
Android Intent应用实践经验总结
一个好的习惯是创建一个辅助类来简化你的数据库交互。
考虑创建一个数据库适配器,来添加一个与数据库交互的包装层。它应该提供直观的、强类型的方法,如添加、删除和更新项目。数据库适配器还应该处理查 询和对创建、打开和关闭数据库的包装。
它还常用静态的Android数据库常量来定义表的名字、列的名字和列的索引。
下面的代码片段显示了一个标准数据库适配器类的框架。它包括一个SQLiteOpenHelper类的扩展类,用于简化打开、创建和更新 Android数据库。
import android.content.Context;
import android.database.*;
import android.database.sqlite.*;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.util.Log;
public class MyDBAdapter
{
private static final String DATABASE_NAME =myDatabase.db ;
private static final String DATABASE_TABLE =mainTable ;
private static final int DATABASE_VERSION = 1;
// The index (key) column name for use in where clauses.
public static final String KEY_ID= _id ;
// The name and column index of each column in your database.
public static final String KEY_NAME= name ;
public static final int NAME_COLUMN = 1;
// TODO: Create public field for each column in your table.
// SQL Statement to create a new database.
private static final String DATABASE_CREATE =create table+
DATABASE_TABLE +(+ KEY_ID +integer primary key autoincrement,+
KEY_NAME +text not null); ;
// Variable to hold the database instance
private SQLiteDatabase db;
// Context of the application using the database.
private final Context context;
// Database open/upgrade helpe
private myDbHelper dbHelper;
public MyDBAdapter(Context _context) {
context = _context;
dbHelper = new myDbHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public MyDBAdapter open() throws SQLException {
db = dbHelper.getWritableDatabase();
return this;
}
public void close() {
db.close();
}
public long insertEntry(MyObject _myObject) {
ContentValues contentValues = new ContentValues();
// TODO fill in ContentValues to represent the new row
return db.insert(DATABASE_TABLE, null, contentValues);
}
public boolean removeEntry(long _rowIndex) {
return db.delete(DATABASE_TABLE, KEY_ID +=+ _rowIndex, null) > 0;
}
public Cursor getAllEntries () {
return db.query(DATABASE_TABLE, new String[] {KEY_ID, KEY_NAME},
null, null, null, null, null);
}
public MyObject getEntry(long _rowIndex) {
MyObject objectInstance = new MyObject();
// TODO Return a cursor to a row from the database and
// use the values to populate an instance of MyObject
return objectInstance;
}
public int updateEntry(long _rowIndex, MyObject _myObject) {
String where = KEY_ID +=+ _rowIndex;
ContentValues contentValues = new ContentValues();
// TODO fill in the ContentValue based on the new object
return db.update(DATABASE_TABLE, contentValues, where, null);
}
private static class myDbHelper extends SQLiteOpenHelper
{
public myDbHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
}
// Called when no database exists in
// disk and the helper class needs
// to create a new one.
@Override
public void onCreate(SQLiteDatabase _db) {
_db.execSQL(DATABASE_CREATE);
}
// Called when there is a database version mismatch meaning that
// the version of the database on disk needs to be upgraded to
// the current version.
@Override
public void onUpgrade(SQLiteDatabase _db, int _oldVersion,
int _newVersion) {
// Log the version upgrade.
Log.w( TaskDBAdapter ,Upgrading from version+
_oldVersion +to+ _newVersion +
, which will destroy all old data );
// Upgrade the existing database to conform to the new version.
// Multiple previous versions can be handled by comparing
// _oldVersion and _newVersion values.
// The simplest case is to drop the old table and create a
// new one.
_db.execSQL( DROP TABLE IF EXISTS+ DATABASE_TABLE);
// Create a new one.
onCreate(_db);
}
}
}
Android数据库的相关操作就为大家介绍到这里