Android中SQLite數據庫使用

一、數據庫軟件的使用

1、創建數據庫【直接點擊添加數據庫就可以創建】

在Database File中填寫你要創建的數據庫名字,如果你不指定路徑的話,他會默認在C:\Users\Administrator\Documents\目錄下創建數據庫文件,當然建議你自定義一個路徑,這樣方便自己管理。

2、創建表

create table Notice(noticeId integer primary key autoincrement,noticeTitle varchar(50))

這裏我們創建了一個Notice的數據庫,其中有兩個字段,一個是 noticeId,他是自增長的主鍵,另一個字段是noticeTitle,創建完之後就可以看到已經有一個表了:

3、插入數據

insert into Notice(noticeTitle) values("通知")

插入的時候,制定了向哪個表的哪個字段中插入什麼數據,這裏表示向Notice表的noticeTitle字段中插入了"通知"這個值

4、查詢

select * from Notice where noticeId>=2 and noticeId<5

這裏我們將Notice表中所有的字段都查出來了,但是加了一個限制,我們查的是noticeId大於等於2並且小於5的數據。

5、刪除表

很簡單的一句話就可以了,drop table Notice

這裏只是很簡單的介紹了一下如果使用Sqlite可視化編輯器,以後有機會還會詳細介紹數據庫方面的知識。二、在Android中使用數據庫

一般我們在Android代碼中使用數據庫時,我們一般會創建一個工具類,這個工具類繼承自SQLiteOpenHelper,繼承這個類必須要實現兩個方法,一個是onCreate(創建數據庫的時候會調用該方法)方法,一個是onUpgrade(數據庫版本有更新的話會調用該數據庫)方法

@Override
public void onCreate(SQLiteDatabase db) {

    String sql = "CREATE TABLE " + TABLE_NAME + " (" + NOTICE_ID
            + " INTEGER primary key autoincrement, " + NOTICE_TITLE + " text, "+ NOTICE_MSG +" text, " + NOTICE_TIME + " text);";
    db.execSQL(sql);
}

在該回調方法中我們創建了一個表格 名字叫做 TABLE_NAME,其中包含三個字段,其中NOTICE_ID是一個主鍵,他是整形類型,並且是自增長的;另外三個是 NOTICE_TITLE,NOTICE_MSG和NOTICE_TIME,他們是text類型的。

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    String sql = " DROP TABLE IF EXISTS " + TABLE_NAME;
    db.execSQL(sql);
    onCreate(db);
}

該回調方法主要是用於數據庫版本升級的,數據庫版本升級時,回先將就得數據庫表刪除(如果存在的話),然後再調用onCreate方法,創建新的數據庫表。

然後就是對數據庫一系列的增刪改查了:

插入數據:

/**
 * 插入數據
 * @param noticeTitle
 * @param noticeMsg
 * @param noticeTime
 * @return
 */
public long insert(String noticeTitle,String noticeMsg,String noticeTime){

    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues cv = new ContentValues();
    cv.put(NOTICE_TITLE,noticeTitle);
    cv.put(NOTICE_MSG,noticeMsg);
    cv.put(NOTICE_TIME,noticeTime);
    long row = db.insert(TABLE_NAME,null,cv);
    return row;
}

查詢數據:

查詢所有的

/**
 * 查詢操作
 * @return
 */
public Cursor select(){

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.query(TABLE_NAME,null,null,null,null,null,null);
    return cursor;
}

條件查詢(查詢NOTICEID大於startNum小於endNum的所有數據)

/**
 * 條件查詢
 * @param startNum
 * @param endNum
 * @return
 */
public Cursor select(String startNum,String endNum){

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.query(TABLE_NAME,new String[]{NOTICE_TITLE,NOTICE_MSG,NOTICE_TIME},"noticeId >= ? and noticeId < ?",
            new String[]{startNum,endNum},null,null,NOTICE_ID + " DESC");
    return cursor;
}

在條件查詢中,我們可以進去方法裏面看query所要傳的參數

public Cursor query(String table, String[] columns, String selection,
        String[] selectionArgs, String groupBy, String having,
        String orderBy) {

    return query(false, table, columns, selection, selectionArgs, groupBy,
            having, orderBy, null /* limit */);
}

第一個table:表名

第二個columns:所要查詢的列名,如果爲null,則表示查詢所有的字段

第三個selection:要查詢的條件,這裏要注意以下語法,比如我們經常的條件查詢要用where,但是在這裏你用where他就會報錯了,相關的語法你可以去百度找一下,提供一個地址:http://www.runoob.com/sqlite/sqlite-syntax.html。

第四個selectionArgs:條件參數

第五個groupBy:分組方式即根據什麼方式來進行分組

第六個having:類似於where的作用,但是它只用於goup by(統計分組中)

第七個orderBy:排序方法

注意:在查詢的時候,有很多人回踩一個坑。平常我們使用sql語句的時候,比如條件查詢 我們一般在sql語句前面加一個"where",order by語句的時候,在查詢語句前面加一個"order by",但是在Android中的query方法中就不必要加一些這個東西了,應爲他已經規定了哪一個參數是where,哪一個參數是having,哪一個參數是orderby,所以我們就不必多此一舉了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章