Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android手機系統教程 >> 安卓開發:Android創建和使用數據庫詳細指南

安卓開發:Android創建和使用數據庫詳細指南

編輯:Android手機系統教程

  數據庫支持每個應用程序無論大小的生命線,除非你的應用程序只處理簡單的數據,那麼就需要一個數據庫系統存儲你的結構化數據,Android使用SQLite數據庫,它是一個開源的、支持多操作系統的SQL數據庫,在許多領域廣泛使用,如Mozilla FireFox就是使用SQLite來存儲配置數據的,iPhone也是使用SQLite來存儲數據的。

  在Android中,你為某個應用程序創建的數據庫,只有它可以訪問,其它應用程序是不能訪問的,數據庫位於Android設備/data/data/ /databases文件夾中,在這篇文章中,你將會學習到如何在Android中創建和使用數據庫。

  SQLite數據庫

  使用Eclipse創建一個Android項目,取名為Database,如圖1所示:

安卓開發:Android創建和使用數據庫詳細指南

圖1 數據庫-使用Eclipse創建你的Android新項目

    創建DBAdapter輔助類

  操作數據庫的最佳實踐是創建一個輔助類,由它封裝所有對數據庫的復雜訪問,對於調用代碼而言它是透明的,因此我創建了一個DBAdapter的輔助類,由它創建、打開、關閉和使用SQLite數據庫。

  首先,在src/ 文件夾(在這個例子中是src/net.learn2develop.Database)下添加一個DBAdapter.java文件。

  在DBAdapter.java文件中,導入所有你要使用到的命名空間:

package net.learn2develop.Databases;

  

  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

  {

  }

  接下來創建一個數據庫,取名為bookstitles,字段如圖2所示。

安卓開發:Android創建和使用數據庫詳細指南

圖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()方法而言,只不過是簡單地刪除表,然後在創建表而已。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved