1、 SQLite介紹
SQLite是android內置的一個很小的關係型數據庫。
SQLite的官網是http://www.sqlite.org/,能夠去下載一些文檔或相關信息。
博客中有一篇有稍微詳細一點的介紹,你們能夠去看一下。
2、 SQLiteOpenHelper的使用方法
SQLiteOpenHelper是一個輔助類來管理數據庫的建立和版本。
能夠經過繼承這個類,實現它的一些方法來對數據庫進行一些操做。
全部繼承了這個類的類都必須實現下面這樣的一個構造方法:
public DatabaseHelper(Context context, String name, CursorFactory factory, int version)
第一個參數:Context類型,上下文對象。
第二個參數:String類型,數據庫的名稱
第三個參數:CursorFactory類型
第四個參數:int類型,數據庫版本
下面是這個類的幾個方法:
方法名 返回類型 描述 備註
getReadableDatabase() synchronized SQLiteDatabase 建立或打開一個數據庫 能夠經過這兩個方法返回的SQLiteDatabase對象對數據庫進行一系列的操做,如新建一個表,插入一條數據等
getWritableDatabase() synchronized SQLiteDatabase 建立或打開一個能夠讀寫的數據庫
onCreate(SQLiteDatabase db) abstract void 第一次建立的時候調用
onOpen(SQLiteDatabase db) void 打開數據庫
onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) abstract void 升級數據庫
close() synchronized void 關閉全部打開的數據庫對象
下面有一個例子,當點擊按鈕時進行相應的操做,效果圖以下:
介於代碼中有詳細備註了,在此我就很少寫了,直接貼代碼了,代碼以下:
DatabaseHelper類:
Java代碼
- package android.sqlite;
-
- import android.content.Context;
- import android.database.sqlite.SQLiteDatabase;
- import android.database.sqlite.SQLiteOpenHelper;
- import android.database.sqlite.SQLiteDatabase.CursorFactory;
-
- /**
- * SQLiteOpenHelper是一個輔助類,用來管理數據庫的建立和版本他,它提供兩個方面的功能
- * 第一,getReadableDatabase()、getWritableDatabase()能夠得到SQLiteDatabase對象,經過該對象能夠對數據庫進行操做
- * 第二,提供了onCreate()、onUpgrade()兩個回調函數,容許咱們再建立和升級數據庫時,進行本身的操做
- */
- public class DatabaseHelper extends SQLiteOpenHelper {
- private static final int VERSION = 1;
-
- /**
- * 在SQLiteOpenHelper的子類當中,必須有該構造函數
- * @param context 上下文對象
- * @param name 數據庫名稱
- * @param factory
- * @param version 當前數據庫的版本,值必須是整數而且是遞增的狀態
- */
- public DatabaseHelper(Context context, String name, CursorFactory factory,
- int version) {
- //必須經過super調用父類當中的構造函數
- super(context, name, factory, version);
- }
-
- public DatabaseHelper(Context context, String name, int version){
- this(context,name,null,version);
- }
-
- public DatabaseHelper(Context context, String name){
- this(context,name,VERSION);
- }
-
- //該函數是在第一次建立的時候執行,其實是第一次獲得SQLiteDatabase對象的時候纔會調用這個方法
- @Override
- public void onCreate(SQLiteDatabase db) {
- // TODO Auto-generated method stub
- System.out.println("create a database");
- //execSQL用於執行SQL語句
- db.execSQL("create table user(id int,name varchar(20))");
- }
-
- @Override
- public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
- // TODO Auto-generated method stub
- System.out.println("upgrade a database");
- }
- }
Activity類:
Java代碼
- package android.sqlite;
-
- import android.app.Activity;
- import android.content.ContentValues;
- import android.database.Cursor;
- import android.database.sqlite.SQLiteDatabase;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
-
- public class SQLiteActivity extends Activity {
- /** Called when the activity is first created. */
- private Button createDatabaseButton = null;
- private Button updateDatabaseButton = null;
- private Button insertButton = null;
- private Button updateButton = null;
- private Button selectButton = null;
- private Button deleteButton = null;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- // 根據控件id得到相應的控件對象
- createDatabaseButton = (Button) findViewById(R.id.createDatabase);
- updateDatabaseButton = (Button) findViewById(R.id.updateDatabase);
- insertButton = (Button) findViewById(R.id.insert);
- updateButton = (Button) findViewById(R.id.update);
- selectButton = (Button) findViewById(R.id.select);
- deleteButton = (Button) findViewById(R.id.delete);
- // 爲按鈕設置監聽器
- createDatabaseButton
- .setOnClickListener(new CreateDatabaseOnClickListener());
- updateDatabaseButton
- .setOnClickListener(new UpdateDatabaseOnClickListener());
- insertButton.setOnClickListener(new InsertOnClickListener());
- updateButton.setOnClickListener(new UpdateOnClickListener());
- selectButton.setOnClickListener(new SelectOnClickListener());
- deleteButton.setOnClickListener(new DeleteOnClickListener());
- }
-
- // createDatabaseButton點擊事件監聽器
- class CreateDatabaseOnClickListener implements OnClickListener {
- public void onClick(View v) {
- // 建立了一個DatabaseHelper對象,只執行這句話是不會建立或打開鏈接的
- DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,
- "test_yangyz_db");
- // 只有調用了DatabaseHelper的getWritableDatabase()方法或者getReadableDatabase()方法以後,纔會建立或打開一個鏈接
- SQLiteDatabase sqliteDatabase = dbHelper.getReadableDatabase();
- }
- }
-
- // updateDatabaseButton點擊事件監聽器
- class UpdateDatabaseOnClickListener implements OnClickListener {
- public void onClick(View v) {
- // TODO Auto-generated method stub
- DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,
- "test_yangyz_db", 2);
- // 獲得一個只讀的SQLiteDatabase對象
- SQLiteDatabase sqliteDatabase = dbHelper.getReadableDatabase();
- }
-
- }
-
- // insertButton點擊事件監聽器
- class InsertOnClickListener implements OnClickListener {
- public void onClick(View v) {
- // 建立ContentValues對象
- ContentValues values = new ContentValues();
- // 向該對象中插入鍵值對,其中鍵是列名,值是但願插入到這一列的值,值必須和數據庫當中的數據類型一致
- values.put("id", 1);
- values.put("name", "yangyz");
- // 建立DatabaseHelper對象
- DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,
- "test_yangyz_db", 2);
- // 獲得一個可寫的SQLiteDatabase對象
- SQLiteDatabase sqliteDatabase = dbHelper.getWritableDatabase();
- // 調用insert方法,就能夠將數據插入到數據庫當中
- // 第一個參數:表名稱
- // 第二個參數:SQl不容許一個空列,若是ContentValues是空的,那麼這一列被明確的指明爲NULL值
- // 第三個參數:ContentValues對象
- sqliteDatabase.insert("user", null, values);
- }
- }
-
- // updateButton點擊事件監聽器
- class UpdateOnClickListener implements OnClickListener {
- public void onClick(View v) {
- // 建立一個DatabaseHelper對象
- DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,
- "test_yangyz_db", 2);
- // 獲得一個可寫的SQLiteDatabase對象
- SQLiteDatabase sqliteDatabase = dbHelper.getWritableDatabase();
- // 建立一個ContentValues對象
- ContentValues values = new ContentValues();
- values.put("name", "zhangsan");
- // 調用update方法
- // 第一個參數String:表名
- // 第二個參數ContentValues:ContentValues對象
- // 第三個參數String:where字句,至關於sql語句where後面的語句,?號是佔位符
- // 第四個參數String[]:佔位符的值
- sqliteDatabase.update("user", values, "id=?", new String[] { "1" });
- System.out.println("-----------update------------");
- }
- }
-
- // selectButton點擊事件監聽器
- class SelectOnClickListener implements OnClickListener {
- public void onClick(View v) {
- String id = null;
- String name = null;
- //建立DatabaseHelper對象
- DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,
- "test_yangyz_db", 2);
- // 獲得一個只讀的SQLiteDatabase對象
- SQLiteDatabase sqliteDatabase = dbHelper.getReadableDatabase();
- // 調用SQLiteDatabase對象的query方法進行查詢,返回一個Cursor對象:由數據庫查詢返回的結果集對象
- // 第一個參數String:表名
- // 第二個參數String[]:要查詢的列名
- // 第三個參數String:查詢條件
- // 第四個參數String[]:查詢條件的參數
- // 第五個參數String:對查詢的結果進行分組
- // 第六個參數String:對分組的結果進行限制
- // 第七個參數String:對查詢的結果進行排序
- Cursor cursor = sqliteDatabase.query("user", new String[] { "id",
- "name" }, "id=?", new String[] { "1" }, null, null, null);
- // 將光標移動到下一行,從而判斷該結果集是否還有下一條數據,若是有則返回true,沒有則返回false
- while (cursor.moveToNext()) {
- id = cursor.getString(cursor.getColumnIndex("id"));
- name = cursor.getString(cursor.getColumnIndex("name"));
- }
- System.out.println("-------------select------------");
- System.out.println("id: "+id);
- System.out.println("name: "+name);
- }
- }
-
- // deleteButton點擊事件監聽器
- class DeleteOnClickListener implements OnClickListener {
- public void onClick(View v) {
- //建立DatabaseHelper對象
- DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_yangyz_db",2);
- //得到可寫的SQLiteDatabase對象
- SQLiteDatabase sqliteDatabase = dbHelper.getWritableDatabase();
- //調用SQLiteDatabase對象的delete方法進行刪除操做
- //第一個參數String:表名
- //第二個參數String:條件語句
- //第三個參數String[]:條件值
- sqliteDatabase.delete("user", "id=?", new String[]{"1"});
- System.out.println("----------delete----------");
- }
- }
- }
佈局文件:
Xml代碼
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/hello"
- />
-
- <Button
- android:id="@+id/createDatabase"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/createDatabaseButton"
- />
-
- <Button
- android:id="@+id/updateDatabase"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/updateDatabaseButton"
- />
-
- <Button
- android:id="@+id/insert"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/insertButton"
- />
-
- <Button
- android:id="@+id/update"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/updateButton"
- />
-
- <Button
- android:id="@+id/select"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/selectButton"
- />
-
- <Button
- android:id="@+id/delete"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/deleteButton"
- />
- </LinearLayout>
String文件:
Xml代碼
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string name="hello">Hello World, SQLiteActivity!</string>
- <string name="app_name">SQLiteTest</string>
- <string name="createDatabaseButton">createDatabase</string>
- <string name="updateDatabaseButton">updateDatabase</string>
- <string name="insertButton">insert</string>
- <string name="updateButton">update</string>
- <string name="selectButton">select</string>
- <string name="deleteButton">delete</string>
- </resources>