Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android筆記——Android中數據的存儲方式(三),android筆記

Android筆記——Android中數據的存儲方式(三),android筆記

編輯:關於android開發

Android筆記——Android中數據的存儲方式(三),android筆記


  Android系統集成了一個輕量級的數據庫:SQLite,所以Android對數據庫的支持很好,每個應用都可以方便的使用它。SQLite作為一個嵌入式的數據庫引擎,專門適用於資源有限的設備上適量數據存取,現在的主流移動設備像Android、iPhone等都使用SQLite作為復雜數據的存儲引擎,並且它是以手機內存為儲存的。

  那麼,實際開發項目中有大量數據需要讀寫,並且需要面臨大量用戶的並發儲存的情況呢。就不應該把數據存放在手機等移動設備的SQLite數據庫裡,移動設備的儲存能力和計算能力都不足以讓它充當服務器的角色。雖然SQLite支持大部分SQL-92語法,也可以使用SQL語句,和其他的主要 SQL 數據庫沒什麼區別。但SQLite並不像Oracle、MySQL數據庫那樣需要安裝、啟動服務器進程,SQLite數據庫只是一個文件。

  綜上所述,我們可以總結出SQLite數據庫的特點:

    面向資源有限的設備;

    沒有服務器進程;

    所有數據存放在同一文件中,可自由復制;

    跨平台;

    操作方便,使用標准的CRUDE語句,ContentResolver.query(), update(), delete() insert()。

  還有其他的特點:效率出眾,這是無可否認的; 十分適合存儲結構化數據 ;方便在不同的Activity,甚至不同的應用之間傳遞數據。

 

在我們為移動設備開發應用程序時,也許就要使用到SQLite來存儲我們大量的數據,所以我們就需要掌握移動設備上的SQLite開發技巧

可以充當服務器

 

且只利用很少的內存就有很好的性能

 

1.3  例子

  4.  SQLite數據庫

    3.1 案例:創建SQLite數據庫

    

  • 創建數據庫需要使用的api:SQLiteOpenHelper

    • 必須定義一個構造方法:

      //arg2:數據庫文件的名字
      //arg3:游標工廠
      //arg4:數據庫版本
      public MyOpenHelper(Context context, String name, CursorFactory factory, int version){}
      
    • 數據庫被創建時會調用:onCreate方法
    • 數據庫升級時會調用:onUpgrade方法
  • 創建數據庫步驟:
    //創建OpenHelper對象
    MyOpenHelper oh = new MyOpenHelper(getContext(), "person.db", null, 1);
    //獲得數據庫對象,如果數據庫不存在,先創建數據庫,後獲得,如果存在,則直接獲得
    SQLiteDatabase db = oh.getWritableDatabase();
  • getWritableDatabase():打開可讀寫的數據庫
  • getReadableDatabase():在磁盤空間不足時打開只讀數據庫,否則打開可讀寫數據庫
  • 在創建數據庫時創建表

    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL("create table person (_id integer primary key autoincrement, name char(10), phone char(20), money integer(20))");
    }
    
  • 代碼:
    •  創建MyOpenHelper類繼承 SQLiteOpenHelper
package com.bokeyuan.createsqlite;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class MyOpenHelper extends SQLiteOpenHelper {

    public MyOpenHelper(Context context, String name, CursorFactory factory,
            int version) {
        //name:數據庫文件的名字
        //factory:游標工廠
        //version:數據庫的版本號
        super(context, name, factory, version);
        // TODO Auto-generated constructor stub
    }

    //數據庫創建時,此方法調用
    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        System.out.println("數據庫被創建了");
     //創建表
        db.execSQL("create table person(_id integer primary key autoincrement, name char(10), phone char(20), money integer(10))"); } //數據庫升級時,此方法調用 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub System.out.println("數據庫升級了"); } }
    •  這裡不再用前台視圖布局,直接用單元測試框架。

      在com.bokeyuan.createsqlite.domian包中創建Test.java 並繼承 AndroidTestCase類。

      

package com.bokeyuan.createsqlite.domian;

import com.bokeyuan.createsqlite.MyOpenHelper;

import android.database.sqlite.SQLiteDatabase;
import android.test.AndroidTestCase;

public class Test extends AndroidTestCase {
    
    public void Test() {
        // 創建數據庫
        //1.創建OpenHelper對象
                                            //獲取一個虛擬上下文
        MyOpenHelper oh = new MyOpenHelper(getContext(), "people.db", null, 2);
        //2.創建數據庫
        //如果數據庫不存在,那麼先創建,再打開,如果數據庫已經存在,側直接打開
        SQLiteDatabase db = oh.getWritableDatabase();
        //如果磁盤不足,數據庫只讀
//        SQLiteDatabase db = oh.getReadableDatabase();
    }
}
    • 在清單文件AndroidManifest.xml設置指令集和庫:

      <instrumentation
              android:name="android.test.InstrumentationTestRunner"
              android:targetPackage="com.bokeyuan.createsqlite"></instrumentation>

      <uses-library android:name="android.test.runner"/>

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.bokeyuan.createsqlite" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="19" /> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.bokeyuan.createsqlite"></instrumentation> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <uses-library android:name="android.test.runner" /> <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> View Code

      數據庫存儲在 data/< 項目文件夾 >/databases/ 下。我們可以用SQLite Professional打開。

      

      數據庫創建時,此方法調用  說明onCreate()方法被調用了,數據庫被創建了

      

      
         把version改成2,Run As →Android JUint Test後, 調用onUpgrade()方法,數據庫升級了

        //1.創建OpenHelper對象
                                            //獲取一個虛擬上下文
          MyOpenHelper oh = new MyOpenHelper(getContext(), "people.db", null, 2);

           

 

 

 

 

 

 

 

 

 

參考資料

Android應用開發基礎之數據存儲和界面展現(三)

Android實現數據存儲技術

Android中SQLite應用詳解

Android數據存儲五種方式總結

Android開發筆記之: 數據存儲方式詳解

 

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