Android 系統內置了一個名為 SQLite 數據庫。那么 SQLite 是一種什么樣的數據庫,它有那些特點,應該怎么操作它?下面,讓我們就來認識一下它吧。
1、概念: SQLite 是一種輕量級的關系型數據庫,它不僅支持標準的 SQL 語法,還遵守了數據庫的 ACID (Atomicity原子性、Consistency 一致性 、Isolation 隔離性 、Durability 持久性)事務。
2、特(優)點:
(1) 運算速度快;
(2) 占用資源少(幾百KB);
(3) 能夠存儲量大且結構復雜的數據。
3、常用數據類型及關鍵字:
- integer(整型)
- real(浮點型)
- text(文本類型)
- blob(二進制類型)
- primary key 設置屬性為主鍵
- autoincrement 表示屬性所在的列是自增長的
4、數據庫文件存儲路徑:/data/data/<package_name>/databases/<databases_name>.db
5、常用操作命令:
(1) 打開數據庫:【 sqlite3 <database_name> 】
(2) 查看所有表:【 .table 】
(3) 查看表的構建命令:【 .schema <table_name> 】
(4)退出數據庫編輯: 【 .exit 】 或【 .quit 】
6、創建 SQLite 數據庫
第一步: 創建數據庫需要定義一個子類去繼承 SQLiteOpenHelper 抽象類,然后重寫這個類的OnCreate() 、onUpgrade() 方法,并且還要定義一個構造方法。
其中一個構造方法的參數如下:
- 參數1:Context
- 參數2:數據庫名稱
- 參數3:cursor(光標,查詢數據時可返回,一般填null)
- 參數4:數據庫版本號(用于升級)
第二步: 在 OnCreate() 方法中調用 execSQL() 方法,然后傳入一個含 SQL 語句的字符串參數作為創建數據庫內容的指令;
第三步: 創建 SQLiteOpenHelper 子類的對象,然后調用對象的 getReadableDatabase() 或 getWritableDatabase() 方法來創建或打開數據庫,這兩個方法都會返回一個可對數據可進行讀寫操作的 SQLiteDatabase 對象。不同的是,當數據庫不可寫入時(如磁盤空間已滿),前者返回的對象將會以只讀的方式打開數據庫,而后者將會出現異常。此外,需要注意的是,當數據庫已存在時,程序是不會再創建數據庫的。
以下是創建數據庫的示例代碼:
public class MyDatabaseHelper extends SQLiteOpenHelper {//定義創建book表格的SQL語句public static final String CREATE_BOOK = "create table Book("+"id integer primary key autoincrement,"+"author text,"+"price real,"+"pages integer,"+"name txt)";private Context mContext;public MyDatabaseHelper(@Nullable Context context, @Nullable String name,@Nullable SQLiteDatabase.CursorFactory factory, int version) {super(context, name, factory, version);mContext = context;}@Overridepublic void onCreate(SQLiteDatabase db) {//執行SQL語句db.execSQL(CREATE_BOOK);Toast.makeText(mContext, "Create succeeded!", Toast.LENGTH_SHORT).show();}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
}
public class MainActivity extends AppCompatActivity {private MyDatabaseHelper dbHelper;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 1);Button createDatabase = (Button) findViewById(R.id.create_database);createDatabase.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dbHelper.getReadableDatabase();}});}
}