- OPEN_READONLY :表明的是以只讀方式打開數據庫(常量值爲:1)
- OPEN_READWRITE:表明以讀寫方式打開數據庫(常量值爲:0)
- CREATE_IF_NECESSARY:當數據庫不存在時建立數據庫
- NO_LOCALIZED_COLLATORS:打開數據庫時,不根據本地化語言對數據庫進行排序(常量值爲:16)
代碼:mysql
//當數據庫存在時:
String path = SDCardHelper.getSDCardRoot() + File.separator + "steven" + File.separator + "android_manual.db";
SQLiteDatabase db = SQLiteDatabase.openDatabase(path, null,SQLiteDatabase.OPEN_READWRITE);
Cursor cursor = db.rawQuery("select * from android_basic order by id desc limit 0 , 15",null);
//當數據庫不存在時:
String path = SDCardHelper.getSDCardRoot() + File.separator + "steven" + File.separator + "words.db";
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(path, null);
db.execSQL("create table tb_words (_id integer primary key autoincrement ,english , chinese)");
建立表:
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(path, null);
db.execSQL("create table tb_words (_id integer primary key autoincrement ,english , chinese)");
String path = SDCardHelper.getSDCardRoot() + File.separator + "steven" + File.separator + "words.db";
主意:
一。SQLite的數據類型?
首先你會接觸到一個讓你驚訝的名詞: Typelessness(無類型)。其實SQLite是無類型的。這意味着你能夠保存任何類型的數據到數據庫表的任何列中, 不管這列聲明的數據類型是什麼。對於SQLite來講對字段不指定類型是徹底有效的。如:create table dict(_id integer primary key autoincrement , word , detail);
注意:這裏必定要注意,SQLite數據庫在一種狀況下是要求類型匹配的,當咱們建表是如create table table1(id integer primary key),sqlite對應一位integer primary key的列值容許你存儲64位的整數。必須是INTEGER PRIMARY KEY AUTOINCREMENT。
誠然SQLite容許忽略數據類型, 可是仍然建議在你的Create Table語句中指定數據類型. 由於數據類型對於你和其餘的程序員交流, 或者你準備換掉你的數據庫引擎時能起到一個提示或幫助的做用。
2、調用SQLiteDatabase 對象的方法執行數據庫操做:【重要】
- execSQL(String sql , Object[] args) 執行帶佔位符的sql語句(update,insert,delete語句)
- rawQuery( String sql , String[] args ) 執行帶佔位符的sql查詢(select語句)
- beginTransaction() 開始事務
- endTransaction() 結束事務
【備註:】除了以上重要的四個方法外,Android考慮到不熟悉sql語句的開發者,提供了進一步封裝後的一系列方法。可是如下這幾個方法參數衆多,平時不建議使用,可是必定也要掌握,在ContentProvider中會有相似的方法,要注意區分。
- insert()
- update()
- delete()
- query()
3、對查詢結果進行操做。當執行的是select語句,返回一個Cursor對象。Cursor相似於JDBC中的ResultSet結果集,內置移動遊標等方法:
- move(int offset) 按偏移量來移動
- moveToFirst() 將記錄指針移動到第一行
- moveToLast () 將記錄指針移動到最後一行
- moveToNext () 將記錄指針移動到下一行
- moveToPosition(int position) 將記錄指針移動到指定的一行
- moveToPrevious() 將記錄指針移動到上一行
- getCount() 返回Cursor的行數
- getColumnName(int index) 根據列的索引返回其相應的列名稱
- getColumnIndex(String name) 根據列的名字返回其相應的索引
- getColumnNames() 返回一個保存有全部列名稱的字符串數組
- getColumnCount() 返回列的總數
- close() 關閉遊標結果集,釋放資源
- getType() 獲取字段的數據類型。分別有0、一、二、三、4這幾個結果。
-
- 0: 表明null
- 1:表明int
- 2:表明float
- 3:表明String
- 4:表明blob
(四)、事務:【重要】
數據庫事務(Database Transaction) ,是指做爲單個邏輯工做單元執行的一系列操做,要麼完整地執行,要麼徹底地不執行。事務的目的是爲了保證數據的一致性。