Android==》資料篇=》SQLite

來源:互聯網
上載者:User

標籤:sqlite   dbopenhelper   onupgrade   getreadabledatabase   

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();
}


}


Android==》資料篇=》SQLite

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.