1.SQLite簡介android
SQLite是一款輕型的數據庫,是遵照ACID的關聯式數據庫管理系統,它的設計目標是嵌入 式的,並且目前已經在不少嵌入式產品中使用了它,它佔用資源很是的低,在嵌入式設備中,可能只須要幾百K的內存就夠了。它可以支持 Windows/Linux/Unix等等主流的操做系統,同時可以跟不少程序語言相結合,好比Tcl、PHP、Java、C++、.Net等,還有ODBC接口,一樣比起 Mysql、PostgreSQL這兩款開源世界著名的數據庫管理系統來說,它的處理速度比他們都快。sql
2.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: 包含了 小時、分鐘、秒。shell
3.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()
|
關閉數據庫
|
下面就在代碼中查看詳細的解釋:app
SQLiteActivityide
1 package mars.sqlite3; 2 3 import mars.sqlite3.db.DatabaseHelper; 4 import android.app.Activity; 5 import android.content.ContentValues; 6 import android.database.Cursor; 7 import android.database.sqlite.SQLiteDatabase; 8 import android.os.Bundle; 9 import android.util.Log; 10 import android.view.View; 11 import android.view.View.OnClickListener; 12 import android.widget.Button; 13 14 public class SQLiteActivity extends Activity { 15 /** Called when the activity is first created. */ 16 private Button createButton; 17 private Button insertButton; 18 private Button updateButton; 19 private Button updateRecordButton; 20 private Button queryButton; 21 @Override 22 public void onCreate(Bundle savedInstanceState) { 23 super.onCreate(savedInstanceState); 24 setContentView(R.layout.main); 25 createButton = (Button)findViewById(R.id.createDatabase); 26 updateButton = (Button)findViewById(R.id.updateDatabase); 27 insertButton = (Button)findViewById(R.id.insert); 28 updateRecordButton = (Button)findViewById(R.id.update); 29 queryButton = (Button)findViewById(R.id.query); 30 createButton.setOnClickListener(new CreateListener()); 31 updateButton.setOnClickListener(new UpdateListener()); 32 insertButton.setOnClickListener(new InsertListener()); 33 updateRecordButton.setOnClickListener(new UpdateRecordListener()); 34 queryButton.setOnClickListener(new QueryListener()); 35 } 36 class CreateListener implements OnClickListener{ 37 @Override 38 public void onClick(View v) { 39 //建立一個DatabaseHelper對象 40 DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db"); 41 //只有調用了DatabaseHelper對象的getReadableDatabase()方法,或者是getWritableDatabase()方法以後,纔會建立,或打開一個數據庫 42 SQLiteDatabase db = dbHelper.getReadableDatabase(); 43 } 44 } 45 class UpdateListener implements OnClickListener{ 46 47 @Override 48 public void onClick(View v) { 49 DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db",2); 50 SQLiteDatabase db = dbHelper.getReadableDatabase(); 51 } 52 53 } 54 class InsertListener implements OnClickListener{ 55 56 @Override 57 public void onClick(View v) { 58 //生成ContentValues對象 59 ContentValues values = new ContentValues(); 60 //想該對象當中插入鍵值對,其中鍵是列名,值是但願插入到這一列的值,值必須和數據庫當中的數據類型一致 61 values.put("id", 1); 62 values.put("name","zhangsan"); 63 DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db",2); 64 SQLiteDatabase db = dbHelper.getWritableDatabase(); 65 //調用insert方法,就能夠將數據插入到數據庫當中 66 db.insert("user", null, values); 67 } 68 } 69 //更新操做就至關於執行SQL語句當中的update語句 70 //UPDATE table_name SET XXCOL=XXX WHERE XXCOL=XX... 71 class UpdateRecordListener implements OnClickListener{ 72 73 @Override 74 public void onClick(View arg0) { 75 // TODO Auto-generated method stub 76 //獲得一個可寫的SQLiteDatabase對象,這裏的version必須爲2時才能夠,由於剛開始的時候更新爲了2,若是爲1的話會出現空異常錯誤 77 DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db",2); 78 SQLiteDatabase db = dbHelper.getWritableDatabase(); 79 ContentValues values = new ContentValues(); 80 values.put("name", "zhangsanfeng"); 81 //第一個參數是要更新的表名 82 //第二個參數是一個ContentValeus對象 83 //第三個參數是where子句 84 db.update("user", values, "id=?", new String[]{"1"}); 85 } 86 } 87 class QueryListener implements OnClickListener{ 88 89 @Override 90 public void onClick(View v) { 91 System.out.println("aaa------------------"); 92 Log.d("myDebug", "myFirstDebugMsg"); 93 94 //如下是出錯的代碼 95 DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db",2); 96 SQLiteDatabase db = dbHelper.getReadableDatabase(); 97 98 //參數1:表名 99 //參數2:要想顯示的列 100 //參數3:where子句 101 //參數4:where子句對應的條件值 102 //參數5:分組方式 103 //參數6:having條件 104 //參數7:排序方式 105 Cursor cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null); 106 while(cursor.moveToNext()){ 107 String name = cursor.getString(cursor.getColumnIndex("name")); 108 System.out.println("query--->" + name); 109 } 110 db.close(); 111 } 112 } 113 114 }
DatabaseHelper函數
1 package mars.sqlite3.db; 2 3 import android.content.Context; 4 import android.database.sqlite.SQLiteDatabase; 5 import android.database.sqlite.SQLiteOpenHelper; 6 import android.database.sqlite.SQLiteDatabase.CursorFactory; 7 8 //DatabaseHelper做爲一個訪問SQLite的助手類,提供兩個方面的功能, 9 //第一,getReadableDatabase(),getWritableDatabase()能夠得到SQLiteDatabse對象,經過該對象能夠對數據庫進行操做 10 //第二,提供了onCreate()和onUpgrade()兩個回調函數,容許咱們在建立和升級數據庫時,進行本身的操做 11 12 public class DatabaseHelper extends SQLiteOpenHelper { 13 14 private static final int VERSION = 1; 15 //在SQLiteOepnHelper的子類當中,必須有該構造函數 16 public DatabaseHelper(Context context, String name, CursorFactory factory, 17 int version) { 18 //必須經過super調用父類當中的構造函數 19 super(context, name, factory, version); 20 // TODO Auto-generated constructor stub 21 } 22 public DatabaseHelper(Context context,String name){ 23 this(context,name,VERSION); 24 } 25 public DatabaseHelper(Context context,String name,int version){ 26 this(context, name,null,version); 27 } 28 29 //該函數是在第一次建立數據庫的時候執行,其實是在第一次獲得SQLiteDatabse對象的時候,纔會調用這個方法 30 @Override 31 public void onCreate(SQLiteDatabase db) { 32 // TODO Auto-generated method stub 33 System.out.println("create a Database"); 34 //execSQL函數用於執行SQL語句 35 db.execSQL("create table user(id int,name varchar(20))"); 36 } 37 38 @Override 39 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 40 // TODO Auto-generated method stub 41 System.out.println("update a Database"); 42 } 43 44 }
效果截圖以下:this
查詢數據截圖:編碼
更新數據而後查詢數據截圖:spa
使用命令來查詢sqlite數據庫
首先打開adb調試,若是打開不成功,說明adb添加到環境變量裏面,把adb添加到環境變量裏面便可,具體的百度一下,比較簡單。
若是出現下面的說明成功:
由於Android是基於Linux內核開發的因此可使用shell命令進行操做,可是在打開此命令的時候有可能會報錯,這時最大的可能就是你的模擬機沒有開,開開模擬機就不會有這樣的錯誤:
而後開始使用Linux命令操做sqlite,首先進入data包,而後一直到顯示全部的工程名就能夠了:
而後進入包來尋找數據庫:
進入databases數據庫:
注意:這裏的ls -l是顯示包裏面的全部的包的:
而後使用sqlite3進行操做數據庫語句:
到這裏就結束了,具體的能夠本身實踐實踐。在這裏給你們推薦一個我的認爲不錯的博客:http://blog.csdn.net/codeeer/article/details/30237597