Android的SQLite的基本操作
SQLite的簡介:
SQLite是一款輕型的資料庫,它的設計目標是嵌入 式的,它佔用資源非常的低,在嵌入式裝置中,可能只需要幾百K的記憶體就夠了。它能夠支援 Windows/Linux/Unix等等主流的作業系統,同時能夠跟很多程式語言相結合,比起 Mysql、PostgreSQL這兩款開源世界著名的資料庫管理系統來講,它的處理速度比他們都快。
SQLite的特點
1:輕量級
SQLite 和C/S模式的資料庫軟體不同,它是程序內的資料庫引擎,因此不存在資料庫的客戶端和伺服器。使用SQLite一般只需要帶上它的一個動態庫,就可以享受它的全部功能。而且那個動態庫的尺寸也挺小,以版本3.6.11為例,Windows下487KB、Linux下347KB。
SQLite的核心引擎本身不依賴第三方的軟體,使用它也不需要"安裝"。有點類似那種綠色軟體。
3:單一檔案
資料庫中所有的資訊(比如表、檢視等)都包含在一個檔案內。這個檔案可以自由複製到其它目錄或其它機器上。
4:跨平臺/可移植性好
除了主流作業系統 windows,linux之後,SQLite還支援其它一些不常用的作業系統。
5:弱型別的欄位
同一列中的資料可以是不同型別
6:開源
SQLite支援的資料型別
NULL: 這個值為空值
VARCHAR(n):長度不固定且其最大長度為 n 的字串,n不能超過 4000。
INTEGER: 值被標識為整數,依據值的大小可以依次被儲存為1,2,3,4,5,6,7,8.
REAL: 所有值都是浮動的數值,被儲存為8位元組的IEEE浮動標記序號.
TEXT: 值為文字字串,使用資料庫編碼儲存(TUTF-8, UTF-16BE or UTF-16-LE).
BLOB: 值是BLOB資料塊,以輸入的資料格式進行儲存。如何輸入就如何儲存,不改 變格式。
DATA :包含了 年份、月份、日期。
TIME: 包含了 小時、分鐘、秒。
SQLiteDatabasejianjie
SQLiteDatabase是操作SQLite資料庫的主要類,它提供了一系列方法來進行資料庫的各種操作
SQLiteDatabase的基本操作:
開啟或建立一個數據庫:
public static SQLIteDatabase openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory)
例:
/建立資料庫檔案
final SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString()
+"/stu.db3",null);
執行一個SQL語句,可以執行除了查詢語句以外的其它語句:
public void execSQL( String sql)
public void execSQL(String sql, Object[] bindArgs)
execSQL(String sql, Object[] bindArgs)方法的第一個引數為SQL語句,第二個引數為SQL語句中佔位符引數的值,引數值在陣列中的順序要和佔位符的位置對應。
例:sqLiteDatabase.execSQL("insert into student(name, age) values('王鴻基', 24)");
sqLiteDatabase .execSQL("insert into student(name, age) values(?,?)", new Object[]{"王鴻基", 24});
執行查詢SQL語句,返回值是一個Cursor物件
public Cursor rawQuery(String sql,String [] selectionArgs)
第一個語句為查詢語句,如果所有的查詢語句都寫在第一個引數裡,則第二個引數可以使用null,或者第一個引數中使用“?”保留一些位置,其值由第二個引數字串陣列中的對應值進行替換,該方法返回一個Cursor物件。
例:
Cursor cursor = db.rawQuery("select * from student", null);
關閉資料庫
public void close()
Cursor的簡介:
Cursor 是每行的集合。使用 moveToFirst() 定位第一行。
必須知道每一列的名稱及資料型別。
Cursor 是一個隨機的資料來源。所有的資料都是通過下標取得。
Cursor的常用方法:
boolean moveToNext()
移動游標到下一行
boolean moveToPrevious()
移動游標到上一行
boolean moveToFirst()
移動游標到第一行
boolean moveToLast()
移動游標到最後一行
boolean moveToPosition(int position)
移動游標到position位置處
boolean move(int offset)
游標移動offset位,offset為正,則向後移動,為負,則向前移動
boolean isFirst()
判斷游標是否在第一行
boolean isLast()
判斷游標是否在最後一行
int getPosition()
返回游標的當前位置
int getColumnCount()
返回所有列的總數
int getCount()
返回查詢結果中的資料條數
int getInt(int index)
int getString(int index)
返回指定欄位位置的相應資料型別的資料