Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 高級開發 >> Android數據庫工作方式解析

Android數據庫工作方式解析

編輯:高級開發

在手機系統領域中,谷歌的android操作系統算是一個新起之秀。但是其優秀的性能以及開源性,使其一經推出就伸手廣大用戶的好評。在這裡我們可以從android數據庫的相關操作來體驗這一系統給我們帶來的好處。

  • android輸出Log相關應用技巧剖析
  • android本地廣播相關操作分析
  • android Widget工具箱
  • android菜單系統基本概念詳解
  • android Intent應用實踐經驗總結

一個好的習慣是創建一個輔助類來簡化你的數據庫交互。

考慮創建一個數據庫適配器,來添加一個與數據庫交互的包裝層。它應該提供直觀的、強類型的方法,如添加、刪除和更新項目。數據庫適配器還應該處理查詢和對創建、打開和關閉數據庫的包裝。

它還常用靜態的android數據庫常量來定義表的名字、列的名字和列的索引。

下面的代碼片段顯示了一個標准數據庫適配器類的框架。它包括一個SQLiteOpenHelper類的擴展類,用於簡化打開、創建和更新android數據庫。

  1. import android.content.Context;
  2. import android.database.*;
  3. import android.database.sqlite.*;
  4. import android.database.sqlite.SQLiteDatabase.CursorFactory;
  5. import android.util.Log;
  6. public class MyDBAdapter
  7. {
  8. private static final String DATABASE_NAME = “myDatabase.db”;
  9. private static final String DATABASE_TABLE = “mainTable”;
  10. private static final int DATABASE_VERSION = 1;
  11. // The index (key) column name for use in where clauses.
  12. public static final String KEY_ID=”_id”;
  13. // The name and column index of each column in your database.
  14. public static final String KEY_NAME=”name”;
  15. public static final int NAME_COLUMN = 1;
  16. // TODO: Create public fIEld for each column in your table.
  17. // SQL Statement to create a new database.
  18. private static final String DATABASE_CREATE = “create table “ +
  19. DATABASE_TABLE + “ (“ + KEY_ID + “ integer primary key autoincrement, “ +
  20. KEY_NAME + “ text not null);”;
  21. // Variable to hold the database instance
  22. private SQLiteDatabase db;
  23. // Context of the application using the database.
  24. private final Context context;
  25. // Database open/upgrade helpe
  26. private myDbHelper dbHelper;
  27. public MyDBAdapter(Context _context) {
  28. context = _context;
  29. dbHelper = new myDbHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
  30. }
  31. public MyDBAdapter open() throws SQLException {
  32. db = dbHelper.getWritableDatabase();
  33. return this;
  34. }
  35. public void close() {
  36. db.close();
  37. }
  38. public long insertEntry(MyObject _myObject) {
  39. ContentValues contentValues = new ContentValues();
  40. // TODO fill in ContentValues to represent the new row
  41. return db.insert(DATABASE_TABLE, null, contentValues);
  42. }
  43. public boolean removeEntry(long _rowIndex) {
  44. return db.delete(DATABASE_TABLE, KEY_ID + “=” + _rowIndex, null) > 0;
  45. }
  46. public Cursor getAllEntrIEs () {
  47. return db.query(DATABASE_TABLE, new String[] {KEY_ID, KEY_NAME},
  48. null, null, null, null, null);
  49. }
  50. public MyObject getEntry(long _rowIndex) {
  51. MyObject objectInstance = new MyObject();
  52. // TODO Return a cursor to a row from the database and
  53. // use the values to populate an instance of MyObject
  54. return objectInstance;
  55. }
  56. public int updateEntry(long _rowIndex, MyObject _myObject) {
  57. String where = KEY_ID + “=” + _rowIndex;
  58. ContentValues contentValues = new ContentValues();
  59. // TODO fill in the ContentValue based on the new object
  60. return db.update(DATABASE_TABLE, contentValues, where, null);
  61. }
  62. private static class myDbHelper extends SQLiteOpenHelper
  63. {
  64. public myDbHelper(Context context, String name, CursorFactory factory,
    int version) {
  65. super(context, name, factory, version);
  66. }
  67. // Called when no database exists in
  68. // disk and the helper class needs
  69. // to create a new one.
  70. @Override
  71. public void onCreate(SQLiteDatabase _db) {
  72. _db.execSQL(DATABASE_CREATE);
  73. }
  74. // Called when there is a database version mismatch meaning that
  75. // the version of the database on disk needs to be upgraded to
  76. // the current version.
  77. @Override
  78. public void onUpgrade(SQLiteDatabase _db, int _oldVersion,
    int _newVersion) {
  79. // Log the version upgrade.
  80. Log.w(“TaskDBAdapter”, “Upgrading from version “ +
  81. _oldVersion + “ to “ + _newVersion +
  82. “, which will destroy all old data”);
  83. // Upgrade the existing database to conform to the new version.
  84. // Multiple previous versions can be handled by comparing
  85. // _oldVersion and _newVersion values.
  86. // The simplest case is to drop the old table and create a
  87. // new one.
  88. _db.execSQL(“DROP TABLE IF EXISTS “ + DATABASE_TABLE);
  89. // Create a new one.
  90. onCreate(_db);
  91. }
  92. }
  93. }

android數據庫的相關操作就為大家介紹到這裡。

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