歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android開發教程:數據存取之SQLite淺析

一.SQLite的介紹

1.SQLite簡介

SQLite是一款輕型的數據庫,是遵守ACID的關聯式數據庫管理系統,它的設計目標是嵌入 式的,而且目前已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。它能夠支持 Windows/Linux/Unix等等主流的操作系統,同時能夠跟很多程序語言相結合,比如Tcl、PHP、Java、C++、.Net等,還有ODBC接口,同樣比起 Mysql、PostgreSQL這兩款開源世界著名的數據庫管理系統來講,它的處理速度比他們都快。

2.SQLite的特點:

輕量級

SQLite和C/S模式的數據庫軟件不同,它是進程內的數據庫引擎,因此不存在數據庫的客戶端和服務器。使用SQLite一般只需要帶上它的一個動態 庫,就可以享受它的全部功能。而且那個動態庫的尺寸也挺小,以版本3.6.11為例,Windows下487KB、Linux下347KB。

不需要"安裝"

SQLite的核心引擎本身不依賴第三方的軟件,使用它也不需要"安裝"。有點類似那種綠色軟件。

單一文件  

數據庫中所有的信息(比如表、視圖等)都包含在一個文件內。這個文件可以自由復制到其它目錄或其它機器上。

跨平台/可移植性

除了主流操作系統 windows,linux之後,SQLite還支持其它一些不常用的操作系統。

弱類型的字段

同一列中的數據可以是不同類型

開源

這個相信大家都懂的!

 3.SQLite數據類型

一般數據采用的固定的靜態數據類型,而SQLite采用的是動態數據類型,會根據存入值自動判斷。SQLite具有以下五種常用的數據類型:

NULL: 這個值為空值

VARCHAR(n):長度不固定且其最大長度為 n 的字串,n不能超過 4000。

CHAR(n):長度固定為n的字串,n不能超過 254。

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: 包含了 小時、分鐘、秒。

相信學過數據庫的童鞋對這些數據類型都不陌生的!!!!!!!!!!

二.SQLiteDatabase的介紹

Android提供了創建和是用SQLite數據庫的API。SQLiteDatabase代表一個數據庫對象,提供了操作數據庫的一些方法。在Android的SDK目錄下有sqlite3工具,我們可以利用它創建數據庫、創建表和執行一些SQL語句。下面是SQLiteDatabase的常用方法。 

SQLiteDatabase的常用方法 

方法名稱

方法描述

openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory)

打開或創建數據庫

insert(String table,String nullColumnHack,ContentValues values)

添加一條記錄

delete(String table,String whereClause,String[] whereArgs)

刪除一條記錄

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

查詢一條記錄

update(String table,ContentValues values,String whereClause,String[] whereArgs)

修改記錄

execSQL(String sql)

執行一條SQL語句

close()

關閉數據庫

1、打開或者創建數據庫

在Android 中以使用SQLiteDatabase的靜態方法openOrCreateDatabase(String path,SQLiteDatabae.CursorFactory factory)打開或者創建一個數據庫。它會自動去檢測是否存在這個數據庫,如果存在則打開,不存在則創建一個數據庫;創建成功則返回一個SQLiteDatabase對象,否則拋出異常FileNotFoundException。

下面是創建名為“stu.db”數據庫的代碼:

  1. db=SQLiteDatabase.openOrCreateDatabase("/data/data/com.lingdududu.db/databases/stu.db",null); 

2、創建表

創建一張表很簡單。首先,編寫創建表的SQL語句,然後,調用SQLiteDatabase的execSQL()方法來執行SQL語句便可以創建一張表了。

下面的代碼創建了一張用戶表,屬性列為:_id(主鍵並且自動增加)、sname(學生姓名)、snumber(學號)

  1. private void createTable(SQLiteDatabase db){  
  2.    
  3.       //創建表SQL語句  
  4.       String stu_table="create table usertable(_id integer primary key autoincrement,sname text,snumber text)";  
  5.    
  6.       //執行SQL語句   
  7.       db.execSQL(stu_table);  
  8. }  

3、插入數據

插入數據有兩種方法:

①SQLiteDatabase的insert(String table,String nullColumnHack,ContentValues values)方法,參數一是表名稱,參數二是空列的默認值,參數三是ContentValues類型的一個封裝了列名稱和列值的Map;

②編寫插入數據的SQL語句,直接調用SQLiteDatabase的execSQL()方法來執行

第一種方法的代碼:

  1. private void insert(SQLiteDatabase db) {  
  2.    
  3.     //實例化常量值  
  4.     ContentValues cValue = new ContentValues();  
  5.    
  6.     //添加用戶名  
  7.     cValue.put("sname","xiaoming");  
  8.    
  9.     //添加密碼  
  10.     cValue.put("snumber","01005");  
  11.    
  12.     //調用insert()方法插入數據  
  13.     db.insert("stu_table",null,cValue);  
  14. }  

第二種方法的代碼:

  1. private void insert(SQLiteDatabase db){   
  2.  
  3.      //插入數據SQL語句  
  4.      String stu_sql="insert into stu_table(sname,snumber) values('xiaoming','01005')";  
  5.    
  6.     //執行SQL語句  
  7.      db.execSQL(sql);  
  8. }  
Copyright © Linux教程網 All Rights Reserved