1. 程式人生 > >android開發之SQLite資料庫 增、刪、改、查

android開發之SQLite資料庫 增、刪、改、查

        學習android開發不可避免的會涉及資料庫的使用,android使用的是SQLite資料庫。對於SQLite資料庫的基本資訊這裡就不過多的介紹,我們主要看哈是怎麼用的就是了。

與以往資料庫不一樣的地方

以前我們做javaWeb開發時用jdbc連線,現在變了,個人覺得變得簡單了。在應用程式中直接就可以去建立資料庫,然後對其進行操作。不用像以前寫連線程式碼。

操作資料庫

一,SQLiteOpenHelper 類

其中

getReadableDatabase()得到可讀的資料庫,返回SQLiteDatabase物件,然後通過物件進行資料庫操作。

getWritableDatabase()得到可寫的資料庫,返回SQLiteDatabase物件,然後通過物件進行資料庫操作。

onCreate(SQLiteDatabase db)在第一次建立資料庫時呼叫。

onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)在更改資料庫時都會呼叫。

onOpen(SQLiteDatabase db)當資料庫開啟時呼叫。

close()關閉資料庫。

二,SQLiteDatabase類

這個類提供了對資料庫的一些基本操作:

insert()

delete()

update()

query()

。。。。。等等。

程式碼:

SQLiteOpenHelper 的子類:

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * 通過getReadableDatabase()和getWritableDatabase()可以獲得資料庫物件。
 * 提供onCreate()-建立資料庫時,onUpgrade()-升級資料庫時,兩個回撥函式。
 */
public class DatabaseHelper extends SQLiteOpenHelper {

	// 按要求必須要有建構函式
	public DatabaseHelper(Context context, String name, CursorFactory factory,
			int version) {
		super(context, name, factory, version);
	}

	// 當第一次得到SQLiteDatabase物件時,呼叫該方法
	@Override
	public void onCreate(SQLiteDatabase db) {
		String sql = "create table MSG(id int,body varchar(100))";
		db.execSQL(sql);
		System.out.println("建立了一個數據庫!");
	}

	// 當更新資料庫時執行該方法
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		System.out.println("更新了資料庫!");
		// 還可以寫其他的操作
	}
}

有了這個類後,我們就可以對資料庫進行增、刪、改、查操作了。
 插入資料:

//生成ContentValues物件,key:列名,value:想插入的值
				ContentValues values = new ContentValues();
				values.put("id", 1);
				values.put("body", "hello");
				DatabaseHelper dbhelper = new DatabaseHelper(SqliteActivity.this, "text_msg", null, 2);
				//得到可寫的SQLiteDatabase物件
				SQLiteDatabase db = dbhelper.getWritableDatabase();
				//呼叫insert方法,將資料插入資料庫
				//引數1:表名
				//引數2:如果你想插入空值,那麼你必須指定它的所在的列
				db.insert("MSG", null, values);
				System.out.println("插入了:1, hello");

刪除資料:

DatabaseHelper dbhelper = new DatabaseHelper(SqliteActivity.this, "text_msg", null, 2);
				//得到可寫的SQLiteDatabase物件
				SQLiteDatabase db = dbhelper.getWritableDatabase();
				//呼叫delete方法,刪除資料
				db.delete("MSG", "id=?", new String[]{"1"});
				System.out.println("刪除了:id=1");

修改資料:

ContentValues values = new ContentValues();
				values.put("body", "my dear!");
				DatabaseHelper dbhelper = new DatabaseHelper(SqliteActivity.this, "text_msg", null, 2);
				//得到可寫的SQLiteDatabase物件
				SQLiteDatabase db = dbhelper.getWritableDatabase();
				//呼叫insert方法,將資料插入資料庫
				//引數3:where 子句 "?"是佔位符號,對應後面的"1",這和web開發時的語法是一樣的
				db.update("MSG", values, "id=?", new String[]{"1"});
				System.out.println("更新了:hello-->my dear!");

查詢資料:

DatabaseHelper dbhelper = new DatabaseHelper(SqliteActivity.this, "text_msg", null, 2);
				//得到可讀的SQLiteDatabase物件
				SQLiteDatabase db = dbhelper.getReadableDatabase();
				//引數1:表名
				//引數2:要想顯示的列
				//引數3:where子句
				//引數4:where子句對應的條件值
				//引數5:分組方式
				//引數6:having條件
				//引數7:排序方式
				Cursor cursor = db.query("MSG", new String[]{"id","body"}, "id=?", new String[]{"1"}, null, null, null);
				System.out.println("查到的資料為:");
				while(cursor.moveToNext()){
						int id = cursor.getInt(cursor.getColumnIndex("id"));
						String name = cursor.getString(cursor.getColumnIndex("body"));
						System.out.println("-->"+id+"::::::::::"+name);
					}

怎樣使用adb檢視資料庫?

SQLite沒有客戶端,不能直接的檢視資料庫,所以用它提供的adb吧。

1,進入命令列後輸入adb回車,會顯示很多的資訊。

2,輸入adb shell回車,就進入了Linux命令列,現在就可以使用Linux的命令了。

3,ls回車,顯示所有的東西,其中有個data。(ls:顯示所有,cd:進入)

4,cd data回車,再ls回車,cd data回車,ls回車後就會看到很多的com.。。。的東西,那就是機器上的應用程式,找到你應用程式的包名,然後進入。

5,進去後在檢視所有,會發現個databases,進入databases,顯示所有就會發現你的資料庫名字,我這裡使用的是"text_msg"。

6,sqlite3 text_msg回車就進入了你的資料庫了,然後“.schema”就會看到該應用程式的所有表及建表語句。

7,現在你就可以使用標準的SQL語句檢視剛才生成的資料庫及資料了。

          對資料庫的操作方法很多,這只是其中一種。