SQLite實例入門

SQLite簡介:

Google爲Andriod的較大的數據處理提供了SQLite,他在數據存儲、管理、維護等各方面都相當出色,功能也非常的強大。SQLite具備下列特點:

  1.輕量級

  使用 SQLite 只需要帶一個動態庫,就可以享受它的全部功能,而且那個動態庫的尺寸想當小。

  2.獨立性

  SQLite 數據庫的核心引擎不需要依賴第三方軟件,也不需要所謂的“安裝”。

  3.隔離性

  SQLite 數據庫中所有的信息(比如表、視圖、觸發器等)都包含在一個文件夾內,方便管理和維護。

  4.跨平臺

  SQLite 目前支持大部分操作系統,不至電腦操作系統更在衆多的手機系統也是能夠運行,比如:Android。

  5.多語言接口

  SQLite 數據庫支持多語言編程接口。

  6.安全性

  SQLite 數據庫通過數據庫級上的獨佔性和共享鎖來實現獨立事務處理。這意味着多個進程可以在同一時間從同一數據庫讀取數據,但只能有一個可以寫入數據。


SQLite,是一款輕型的數據庫,是遵守ACID的關聯式數據庫管理系統,它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。

1. ACID事務
2. 零配置 – 無需安裝和管理配置
3. 儲存在單一磁盤文件中的一個完整的數據庫
4. 數據庫文件可以在不同字節順序的機器間自由的共享
5. 支持數據庫大小至2TB
6. 足夠小, 大致3萬行C代碼, 250K
7. 比一些流行的數據庫在大部分普通數據庫操作要快
8. 簡單, 輕鬆的API(轉自百度百科)



SQLiteOpenHelper介紹:

在android平臺上要操作SQLite數據庫就必須要使用SQLiteOpenHelper類。

一個幫助類管理數據庫創建和管理,你創建一個子類去實現onCreate(SQLiteDatabase),onUpgrade(SQLiteDatabase, int, int) 方法,onOpen(SQLiteDatabase)可選擇性實現.

SQLiteOpenHelper作爲一個訪問SQLite的幫助類,提供兩方面的功能
1.getReadableDatabase(),getWritableDatabase()可以獲得SQLiteDatatbase對象,/對這個對象進行相關操作
2.提供了onCreate()和onUpgrade()兩個回調函數,允許我們在創建和升級數據庫時進行操作

//MySQliteOpenHelper作爲一個訪問SQLite的幫助類,提供兩方面的功能
//1.getReadableDatabase(),getWritableDatabase()可以獲得SQLiteDatatbase對象,
//對這個對象進行相關操作
//2.提供了onCreate()和onUpgrade()兩個回調函數,允許我們在創建和升級數據庫時進行操作
public class MySQLiteOpenHelper extends SQLiteOpenHelper {

	public static final String DATABASE_NAME = "test.db";

	public static final String TAG = "MySQLiteOpenHelper";

	public MySQLiteOpenHelper(Context context) {
		this(context, DATABASE_NAME, null, 1);
	}

	public MySQLiteOpenHelper(Context context, int version) {
		this(context, DATABASE_NAME, null, version);
	}

	// 必須要有這一個構造方法
	public MySQLiteOpenHelper(Context context, String name,
			CursorFactory factory, int version) {
		super(context, name, factory, version);
		// TODO Auto-generated constructor stub
	}

	// 當數據庫第一次創建的時候被調用,
	// 當調用getReadableDatabase ()或getWritableDatabase 的時候
	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		Log.d(TAG, "onCreate");

		String sql = "create table user(id int,name varchar(20))";
		db.execSQL(sql);
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
		Log.d(TAG, "onUpgrade");
	}

}

主界面上的功能

public class MainActivity extends Activity {

	public static final String TAG = "MainActivity";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	public void createDatabase(View view) {
		MySQLiteOpenHelper dbHelper = new MySQLiteOpenHelper(MainActivity.this);
		// 這一步纔會創建數據庫,即回調MySQLiteOpenHelper的onCreate方法
		dbHelper.getWritableDatabase();

	}

	public void upgradeDatabase(View view) {
		MySQLiteOpenHelper dbHelper = new MySQLiteOpenHelper(MainActivity.this,
				2);
		// 這一步纔會創建數據庫
		dbHelper.getWritableDatabase();

	}

	public void insert(View view) {
		ContentValues cv = new ContentValues();
		cv.put("id", 1);
		cv.put("name", "zhangsan");

		MySQLiteOpenHelper dbHelper = new MySQLiteOpenHelper(MainActivity.this,
				2);
		// 得到數據庫對象
		SQLiteDatabase db = dbHelper.getWritableDatabase();
		db.insert("user", null, cv);

	}

	public void delete(View view) {

		MySQLiteOpenHelper dbHelper = new MySQLiteOpenHelper(MainActivity.this);
		// 得到數據庫對象
		SQLiteDatabase db = dbHelper.getWritableDatabase();

		db.delete("user", "id=?", new String[] { "1" });
	}

	public void update(View view) {

		MySQLiteOpenHelper dbHelper = new MySQLiteOpenHelper(MainActivity.this);
		// 得到數據庫對象
		SQLiteDatabase db = dbHelper.getWritableDatabase();

		ContentValues cv = new ContentValues();
		cv.put("name", "zhangsanfeng");
		// 第一個參數是要更新的表名
		// 第二個參數是一個ContentValues對象
		// 第三個參數是where子句
		db.update("user", cv, "id=?", new String[] { "1" });
	}

	public void query(View view) {
		MySQLiteOpenHelper dbHelper = new MySQLiteOpenHelper(MainActivity.this);
		// 得到數據庫對象
		SQLiteDatabase db = dbHelper.getWritableDatabase();

		Cursor cursor = db.query("user", new String[] { "id", "name" }, "id=?",
				new String[] { "1" }, null, null, null);
		while (cursor.moveToNext()) {
			int id = cursor.getInt(cursor.getColumnIndex("id"));
			String name = cursor.getString(cursor.getColumnIndex("name"));

			Log.d(TAG, "id:" + id);
			Log.d(TAG, "name:" + name);

		}
	}

}

原代碼下載資源鏈接(免積分)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章