Android==》數據篇=》SQLite

SQLite簡介:

    SQLite是用C語言編寫的開源嵌入式數據庫引擎。它支持大多數的SQL92標準,並且可以在所有主要的操作系統上運行。

          --支持高達2TB大小的數據庫

          --以單個文件的形式存在

          --以B-Tree的數據結構形式存儲在磁盤

特點主要包括:

     1.輕量級     一個動態庫    單文件

     2.獨立性     沒有依賴,無需安裝

     3.隔離性     全部在一個文件夾中

     4.跨平臺    支持衆多操作系統

     5.多語言接口  支持衆多編程語言

     6.安全性   事務

關於事務處理的安全性問題:

   --通過數據庫上的獨佔性和共享鎖來實現獨立事務處理。

  --多個進程可以再同一時間從同一數據庫讀取數據,但只有一個可以寫入數據。

關於SQLite的數據類型:

      --SQLite支持 NULL,INTEGER,REAL,TEXT和BLOB數據類型

      --依次代表:空值,整型值,浮點值,字符串值,二進制對象

動態數據類型(弱引用)

     --當某個值插入到數據庫時,SQLite將會檢查它的類型,如果該類型與關聯的列不匹配,SQLite則會嘗試將該值轉換成該列的類型,如果不能轉換,則該值將作爲本身的類型存儲。


在Android中如何使用SQLite:

--SQLiteDataBase

--SQLiteOpenHelper


public class MainActivity extends Activity {
private static final String TABLENAME ="stutb";


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

SQLiteDatabase db = openOrCreateDatabase("stu.db", MODE_PRIVATE, null);
db.execSQL("create table if not exists stutb (_id integer primary key autoincrement, name text not null,sex text not null, age integer not null)");

ContentValues values = new ContentValues();
values.put("name", "張三");
values.put("sex", "男");
values.put("age", 18);
long rowId = db.insert("stutb", null, values);
values.clear();

values.put("name", "張三feng");
values.put("sex", "男");
values.put("age", 108);
db.insert("stutb", null, values);
values.clear();

values.put("name", "張三豐");
values.put("sex", "男");
values.put("age", 108);
db.insert("stutb", null, values);
values.clear();

values.put("name", "張三feng");
values.put("sex", "男");
values.put("age", 108);
db.insert("stutb", null, values);
values.clear();

values.put("sex", "女");

db.update("stutb", values, "_id>?", new String[]{"3"});//將全部id>3的人的性別改成女
db.delete("stutb", "name like?", new String[]{"%豐%"});//刪除所有名字中帶豐的人
Cursor c = db.query("stutb", null, "_id>?", new String[]{"0"}, null, null, "name");
if (c != null) {
String[] columns = c.getColumnNames();
while (c.moveToNext()) {
for (String columnName:columns) {
Log.i("info", c.getString(c.getColumnIndex(columnName)));
}
}
c.close();
}

}


SQLiteOpenHelper:

>SQLiteDatabase的幫助類,用於管理數據庫的創建和版本更新

>一般是建立一個類繼承它,並重寫onCreate()和onUpgrade()方法

>方法說明:

* onCreate(SQLiteDataBase db)                                                                創建數據庫時調用

*onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)        版本更新時調用

*getReadableDatabase()                                                                             創建或打開一個只讀數據庫

*getWritableDatabase()                                                                                創建或打開一個讀寫數據庫


代碼示例:

public class DBOpenHelper extends SQLiteOpenHelper{


public DBOpenHelper(Context context, String name) {
super(context, name, null, 1);
// TODO Auto-generated constructor stub
}

public DBOpenHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}


//首次創建數據庫的時候調用  可以建庫,建表的操作
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("create table if not exists stutb(_id integer primary key autoincrement,name text not null,sex text not null,age integer not null)");
db.execSQL("insert into stutb(name, sex, age)values('張三','女',18)");
}



//當數據庫的版本發生變化的時候,會自動執行
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub

}


}

========================

public class MainActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DBOpenHelper helper = new DBOpenHelper(MainActivity.this, "stu.db");
SQLiteDatabase db = helper.getWritableDatabase();

Cursor c = db.rawQuery("select*from stutb", null);
if (c!= null) {
String[] cols = c.getColumnNames();
while (c.moveToNext()) {
for (String ColumnName:cols) {
Log.i("info", ColumnName+":"+c.getString(c.getColumnIndex(ColumnName)));
}

}
c.close();
}
db.close();
}


}


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