Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> SQLite 在 Android 的應用,sqliteandroid應用

SQLite 在 Android 的應用,sqliteandroid應用

編輯:關於android開發

SQLite 在 Android 的應用,sqliteandroid應用


Android提供了創建和使用SQLite數據庫的API(Application Programming Interface,應用程序編程接口)。

在Android系統中,主要由類SQLiteDatabase和SQLiteOpenHelper對SQLite數據庫進行管理和操作。

 

(一)SQLiteOpenHelper類


SQLiteOpenHelper是SQLiteDatabase的一個幫助類,用來管理數據庫的創建和版本的更新。

因為是個抽象類,所以必須創建一個類來繼承它,並實現兩個抽象的方法onCreate()和onUpgrade()方法。

方法 說明

SQLiteOpenHelper(Context context, String name, 

  SQLiteDatabase.CursorFactory factory, int version)

構造方法 abstract  void onCreate(SQLiteDatabase db) 創建數據庫時調用

abstract  void onUpgrade(SQLiteDatabase db,

  int oldVersion, int newVersion)

升級數據庫時調用 void onOpen(SQLiteDatabase db)  打開數據庫時調用 SQLiteDatabase getReadableDatabase() 創建或打開數據庫 SQLiteDatabase getWritableDatabase() 創建或打開一個讀寫數據庫

下面是一個具體的例子:DatabaseHelper.java

private static class DatabaseHelper extends SQLiteOpenHelper {

    static final String DATABASE_NAME = "College.db";
    static final int DATABASE_VERSION = 1;
    static final String STUDENTS_TABLE_NAME = "students";
    static final String CREATE_DB_TABLE =
        " CREATE TABLE " + STUDENTS_TABLE_NAME +
        " (_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
        " name TEXT NOT NULL, " +
        " grade TEXT NOT NULL);";

    DatabaseHelper(Context context){
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db)
    {
        db.execSQL(CREATE_DB_TABLE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + STUDENTS_TABLE_NAME);
        onCreate(db);
    }
}

 

(二)創建數據庫


在Activity中創建數據庫對象,可能是在onCreate()方法或事件中創建:

DatabaseHelper database = new DatabaseHelper(this);
SQLiteDatabase db = null;
db = database.getWritableDatabase();

首先實例一個SQLiteOpenHelper幫助類的對象,然後調用該對象的getWritableDatabase() 或 getReadableDatabase()方法 獲得SQLiteDatabase 數據庫對象。

 

另外2種創建的方法:

1、應用SQLiteDatabase對象openDatabase()方法及openOrCreateDatabase()方法創建數據庫;

2、應用Activity繼承於父類android.content.Context創建數據庫的方法openOrCreateDatabase()來創建數據庫。

  此外

1、在DDMS中查看,College.db 生成在/data/data/xxxx(包名)/databases路徑下。

2、刪除數據庫文件,應用android.content.Context類的deleteDatabase(String name)方法來刪除指定的數據庫。

 

(三)SQLiteDatabase 類


SQLiteDatabase 類的方法有很多,下面是最常用的幾個。一般的數據操作,可以使用對應的方法,或者自己寫需要的sql語句,再調用execSQL()方法執行。

方法 說明

openOrCreateDatabase(String path, 

  SQLiteDatabase.CursorFactory  factory)

打開或創建數據庫

openDatabase(String path,  SQLiteDatabase.CursorFactory  factory,int flags)

打開指定的數據庫

insert(String table, String nullColumnHack, ContentValues  values)

新增一條記錄

delete(String table,String whereClause, String[]  whereArgs)

刪除一條記錄

update(String table,ContentValues values, String whereClause,String[]  whereArgs)

修改記錄

query(String table,String[] columns, String selection,

  String[]selectionArgs, String groupBy,String having, String orderBy)

查詢一條記錄 execSQL(String sql) 執行SQL語句 close() 關閉數據庫

 

(四)增刪改查


對數據記錄的操作處理有兩種方法:

  • 編寫一條對記錄進行增、刪、改、查的SQL語句,通過exeSQL()方法來執行
  • 使用SQLiteDatabase對象的相應方法進行操作

數據添加

insert(String table, String nullColumnHack, ContentValues  values)方法
第1個參數table:增加記錄的數據表;
第2個參數nullColumnHack:空列的默認值,通常為null;
第3個參數ContentValues:為ContentValues對象,其實就是一個鍵值對的字段名稱,鍵名為表中的字段名,鍵值為要增加的記錄數據值。通過ContentValues對象的put()方法把數據存放到ContentValues對象中。

ContentValues cv = new ContentValues(); //實例化ContentValues用來裝載待插入的數據
cv.put("name","Apple");                 //添加學生
cv.put("grade","A");                    //添加成績
db.insert("user",null,cv);              //執行插入操作

或者

String sql = "insert into students (name,grade) values ('Apple','A');
db.execSQL(sql);

 

數據刪除

delete(String table,String whereClause, String[]  whereArgs)方法
第1個參數table:修改記錄的數據表;
第2個參數whereClause:刪除數據的條件,相當於SQL語句的where子句;
第3個參數whereArgs:刪除條件的參數數組。

String whereClause = "name=?";                  //刪除的條件
String[] whereArgs = {"Apple"};                 //刪除的條件參數
db.delete("students",whereClause,whereArgs);    //執行刪除

或者

String sql = "delete from students where name='Apple'";
db.execSQL(sql);

 

數據修改

update(String table,ContentValues values,String whereClause, String[]  whereArgs)方法
第1個參數table:修改記錄的數據表;
第2個參數ContentValues:ContentValues對象,存放已作修改的數據的對象;
第3個參數whereClause:修改數據的條件,相當於SQL語句的where子句;
第4個參數whereArgs:修改數據值的數組。

ContentValues cv = new ContentValues();         //實例化ContentValues
cv.put("grade","AA");                           //添加要更改的字段及內容
String whereClause = "username=?";              //修改條件
String[] whereArgs = {"Appke"};                 //修改條件的參數
db.update("students",cv,whereClause,whereArgs); //執行修改

或者

String sql = "update students set grade = 'AA' where name='Apple'";
db.execSQL(sql);

 

數據查詢

query(String table, String[] columns, String selection,
String[] selectionArgs, String groupBy, String having, String orderBy)方法
第1個參數table:查詢記錄的數據表;
第2個參數columns:查詢的字段,如為null,則為所有字段;
第3個參數selection:查詢條件,可以使用通配符“?”;
第4個參數selectionArgs:參數數組,用於替換查詢條件中的“?”;
第5個參數groupBy:查詢結果按指定字段分組;
第6個參數having:限定分組的條件;
第7個參數orderBy:查詢結果的排序條件。

db.query("students",null,null,null,null,null,null);

或者

String sql = "select * from students";
db.execSQL(sql);

 

(五)對查詢結果cursor的處理


query()方法查詢的數據均封裝到查詢結果Cursor對象之中,Cursor相當於SQL語句中resultSet結果集上的一個游標,可以向前向後移動。

Cursor對象的常用方法有:

方法

說明

getCount()

獲取總記錄條數

isFirst()

判斷是否第一條記錄

isLast()

判斷是否最後一條記錄

moveToFirst()

移動到第一條記錄

moveToLast()

移動到最後一條記錄

move(int offset)

移動到指定的記錄

moveToNext()

移動到下一條記錄

moveToPrevious()

移動到上一條記錄

getColumnIndex(String columnName)

獲得指定列索引的int類型值

 一個例子:

Cursor c = db.query("students",null,null,null,null,null,null);  //查詢並獲得游標
if(c.moveToFirst()){                                            //判斷游標是否為空
    for(int i=0;i<c.getCount();i++){
        c.move(i);                                              //移動到指定記錄
        String name = c.getString(c.getColumnIndex("name");
        String grade = c.getString(c.getColumnIndex("grade"));
    }
}

 

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