SQLite簡介:
Google爲Andriod的較大的數據處理提供了SQLite,他在數據存儲、管理、維護等各方面都相當出色,功能也非常的強大。SQLite具備下列特點:
1.輕量級
使用 SQLite 只需要帶一個動態庫,就可以享受它的全部功能,而且那個動態庫的尺寸想當小。
2.獨立性
SQLite 數據庫的核心引擎不需要依賴第三方軟件,也不需要所謂的“安裝”。
3.隔離性
SQLite 數據庫中所有的信息(比如表、視圖、觸發器等)都包含在一個文件夾內,方便管理和維護。
4.跨平臺
SQLite 目前支持大部分操作系統,不至電腦操作系統更在衆多的手機系統也是能夠運行,比如:Android。
5.多語言接口
SQLite 數據庫支持多語言編程接口。
6.安全性
SQLite 數據庫通過數據庫級上的獨佔性和共享鎖來實現獨立事務處理。這意味着多個進程可以在同一時間從同一數據庫讀取數據,但只能有一個可以寫入數據。
SQLite,是一款輕型的數據庫,是遵守ACID的關聯式數據庫管理系統,它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。
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);
}
}
}