Android數據存儲方式之SQLite(1、SQLiteDatabase)

1、SQLite簡介

這裏寫圖片描述

2、SQLite特點

這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

3、SQLite支持的數據類型

這裏寫圖片描述

4、SQLite常用方法

Android中我們使用兩個類來進行數據庫操作:

4.1、SQLiteDatabase

這裏寫圖片描述
這裏寫圖片描述
代碼實現:
這裏寫圖片描述
通過openOrCreateDatabase()語句我們可以創建或者打開一個數據庫其中三個參數分別爲(”數據庫名”,模式(可選私有,可讀,可寫),工廠模式)調用該方法回返回一個SQLiteDatabase類的對象。並且每一個程序都有自己的數據庫,默認情況下相互不干擾。
運行一下該程序我們可以通過DDMS中可以看到系統已經爲我們創建好了一個數據庫。
這裏寫圖片描述
這裏寫圖片描述
有了數據庫之後我們這裏就需要創建表:1、通過SQL語句創建一個主鍵爲integer類型並且主鍵自增,三個字段分別爲’name’,’age,’sex’三個字段並且不能爲空。(主鍵名建議使用下劃線開頭)。
2、下面我們使用SQL語句javadb.execSQL("insert into usertb(name,age,sex)values('德羅巴','18','男')");
db.execSQL("insert into usertb(name,age,sex)values('魔獸','19','男')");
db.execSQL("insert into usertb(name,age,sex)values('非洲劉德華','20','男')");
db.execSQL("insert into usertb(name,age,sex)values('木鳥','21','男')");

把數據插入到數據庫中。
有了數據之後我們就可以在Android中對數據進行查詢

Cursor c = db.rawQuery("select * from usertb", null);

執行上面一條語句返回的是一個Cursor對象
這裏寫圖片描述
Cursor類的相關方法:
這裏寫圖片描述
這裏寫圖片描述
上面語句中我們首先判斷Cursor對象是否爲空,使用moveToNext()方法若存在數據那麼就執行循環,使用日誌打印首先使用c.getXXX()方法得到我們要返回的數據類型,在其中傳入一個參數爲c.getColumnIndex(“字段名”)就可以得到我們要查詢的數據庫結果。最後記得關閉Cursor對象以及數據庫對象釋放內存資源
完整代碼如下:

package com.example.liujing.sqlitedemo;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        SQLiteDatabase db = openOrCreateDatabase("user.db", MODE_PRIVATE, null);
        db.execSQL("create table if not exists usertb (_id integer primary key autoincrement, " +
                "name text not null, age integer not null,sex text not null)");
        db.execSQL("insert into usertb(name,age,sex)values('德羅巴','18','男')");
        db.execSQL("insert into usertb(name,age,sex)values('魔獸','19','男')");
        db.execSQL("insert into usertb(name,age,sex)values('非洲劉德華','20','男')");
        db.execSQL("insert into usertb(name,age,sex)values('木鳥','21','男')");
        //查詢數據庫
        Cursor c = db.rawQuery("select * from usertb", null);
        if(c!=null){
            while(c.moveToNext()){
                Log.i("tag","_id:"+c.getInt(c.getColumnIndex("_id")));
                Log.i("tag","name:"+c.getString(c.getColumnIndex("name")));
                Log.i("tag","age:"+c.getInt(c.getColumnIndex("age")));
                Log.i("tag", "sex:" + c.getString(c.getColumnIndex("sex")));
            }
            c.close();
        }
        db.close();
    }
}

不熟悉SQL語句?Android中還給我們提供了一個ContentValues對象來讓我們操作數據庫,代碼如下:

package com.example.liujing.sqlitedemo;

import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        SQLiteDatabase db = openOrCreateDatabase("user.db", MODE_PRIVATE, null);
        db.execSQL("create table if not exists usertb (_id integer primary key autoincrement, " +
                "name text not null, age integer not null,sex text not null)");
//        db.execSQL("insert into usertb(name,age,sex)values('德羅巴','18','男')");
//        db.execSQL("insert into usertb(name,age,sex)values('魔獸','19','男')");
//        db.execSQL("insert into usertb(name,age,sex)values('非洲劉德華','20','男')");
//        db.execSQL("insert into usertb(name,age,sex)values('木鳥','21','男')");
//        //查詢數據庫
//        Cursor c = db.rawQuery("select * from usertb", null);
//        if(c!=null){
//            while(c.moveToNext()){
//                Log.i("tag","_id:"+c.getInt(c.getColumnIndex("_id")));
//                Log.i("tag","name:"+c.getString(c.getColumnIndex("name")));
//                Log.i("tag","age:"+c.getInt(c.getColumnIndex("age")));
//                Log.i("tag", "sex:" + c.getString(c.getColumnIndex("sex")));
//            }
//            c.close();
//        }
//        db.close();
        //首先創建一個ContentValues對象
        ContentValues cv = new ContentValues();
        //使用put()方法兩個參數分別爲數據庫的字段名,插入的數據(類似hashmap的鍵值對,鍵是表的列名,值是插入的數據)
        cv.put("name", "王尼瑪");
        cv.put("age", 22);
        cv.put("sex", "男女男");
        //特別提示如果需要繼續插入下一條數據這裏我們首先要使用clear()方法清空一次然後在寫入數據
        //最後執行數據庫插入,三個參數分別爲表名,默認值設爲null,插入的對象.
        db.insert("usertb", null, cv);
        cv.clear();

        cv.put("name", "敖廠長");
        cv.put("age", 23);
        cv.put("sex", "男");
        db.insert("usertb", null, cv);
        cv.clear();

        cv.put("name", "張全蛋");
        cv.put("age", 24);
        cv.put("sex", "男神");
        db.insert("usertb", null, cv);
        cv.clear();

        //修改性別爲女
        cv.put("sex", "女");
        //將id>1的性別改成女
        db.update("usertb", cv, "_id>?", new String[]{"1"});
        //刪除所有名字帶尼的數據
        db.delete("usertb","name like ?",new String[]{"%尼%"});

        Cursor c = db.rawQuery("select * from usertb", null);
        if (c != null) {
            while (c.moveToNext()) {
                Log.i("tag", "_id:" + c.getInt(c.getColumnIndex("_id")));
                Log.i("tag", "name:" + c.getString(c.getColumnIndex("name")));
                Log.i("tag", "age:" + c.getInt(c.getColumnIndex("age")));
                Log.i("tag", "sex:" + c.getString(c.getColumnIndex("sex")));
            }
            c.close();
        }
        db.close();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章