文章目錄
- 1.SQLite的特點
- 2.SQLite的使用
- 2.1資料庫的創建
- 2.2新增(insert)
- 2.3修改(update)
- 2.4洗掉(delete)
- 2.5查詢(query)
- 3.使用SQL陳述句進行資料庫操作
- 4.SQLite事務
1.SQLite的特點
- SQLite是一個輕量級資料庫,它設計目標是嵌入式的,而且占用資源非常低
- SQLite沒有服務器行程,通過檔案保存資料,該檔案是跨平臺的
- 支持null,integer,real,text,blob五種資料型別,實際上SQLite也接受varchar,char,decimal等資料型別,只不過在運算中或保存時會轉換成對應的5種資料型別,因此,可以將各種型別資料保存到任何欄位中
2.SQLite的使用
2.1資料庫的創建
在android中,創建SQLite資料庫非常簡單,Android系統推薦使用SQLiteOpenHelper的子類創建資料庫,因此需要創建一個類繼承自SQLiteOpenHelper,并重寫該類的onCreate和onUpgrade方法即可

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBHelper extends SQLiteOpenHelper {
/**
* 作為SQLiteOpenHelper子類必須有的構造方法
* @param context 背景關系引數
* @param name 資料庫名字
* @param factory 游標工廠 ,通常是null
* @param version 資料庫的版本
*/
public DBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
/**
* 資料庫第一次被創建時呼叫該方法
* @param db
*/
@Override
public void onCreate(SQLiteDatabase db) {
// 初始化資料庫的表結構,執行一條建表的SQL陳述句
db.execSQL("create table user(u_id int not null primary key,u_name varchar(50) not null,age int)");
}
/**
* 當資料庫的版本號增加呼叫
* @param db
* @param oldVersion
* @param newVersion
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
2.2新增(insert)
public void insert(String name,int age){
// 通過DBHelper類獲取一個讀寫的SQLiteDatabase物件
SQLiteDatabase db=dbHelper.getWritableDatabase();
// 創建ContentValue設定引數
ContentValues contentValues=new ContentValues();
contentValues.put("name",name);
contentValues.put("age",age);
// 插入資料
// insert方法引數1:要插入的表名
// insert方法引數2:如果發現將要插入的行為空時,會將這個列名的值設為null
// insert方法引數3:contentValue
long i=db.insert("user",null ,contentValues);
// 釋放連接
db.close();
}
2.3修改(update)
public void update(String name,int age){
// 通過DBHelper類獲取一個讀寫的SQLiteDatabase物件
SQLiteDatabase db=dbHelper.getWritableDatabase();
// 創建ContentValue設定引數
ContentValues contentValues=new ContentValues();
contentValues.put("age",age);
// 修改資料
// 引數1:tablename
// 引數2:修改的值
// 引數3:修改的條件(SQL where陳述句)
// 引數4:表示whereClause陳述句中的運算式的占位符引數串列,這些字串會替換where條件中?
db.update("user",contentValues,"name=?",new String[]{name});
// 釋放連接
db.close();
}
2.4洗掉(delete)
public void delete(long id) {
// 通過DBHelper類獲取一個讀寫的SQLiteDatabase物件
SQLiteDatabase db = dbHelper.getWritableDatabase();
// 引數1:tablename
// 引數2:洗掉的條件(SQL陳述句)
// 引數3:給修改的條件注入引數,一個或多個
db.delete("user", "u_id=?", new String[]{id + ""});
// 釋放連接
db.close();
}
2.5查詢(query)
public void query() {
// 通過DBHelper類獲取一個讀寫的SQLiteDatabase物件
SQLiteDatabase db = dbHelper.getWritableDatabase();
// 引數1:table_name
// 引數2:columns 要查詢出來的列名,相當于 select *** from table陳述句中的 ***部分
// 引數3:selection 查詢條件字句,在條件子句允許使用占位符“?”表示條件值
// 引數4:selectionArgs :對應于 selection引數 占位符的值
// 引數5:groupby 相當于 select *** from table where && group by ... 陳述句中 ... 的部分
// 引數6:having 相當于 select *** from table where && group by ...having %%% 陳述句中 %%% 的部分
// 引數7:orderBy :相當于 select ***from ?? where&& group by ...having %%% order by@@陳述句中的@@ 部分,如: personid desc(按person 降序)
Cursor cursor = db.query("user", null, null, null, null, null, null);
// 將游標移到開頭
cursor.moveToFirst();
while (!cursor.isAfterLast()) { // 游標只要不是在最后一行之后,就一直回圈
int id=cursor.getInt(0);
String name=cursor.getString(1);
// 將游標移到下一行
cursor.moveToNext();
}
db.close();
}
3.使用SQL陳述句進行資料庫操作
// 通過DBHelper類獲取一個讀寫的SQLiteDatabase物件
SQLiteDatabase db = dbHelper.getWritableDatabase();
// insert
db.execSQL("insert into user (id,name,age) values (?,?,?)",new Object[]{1,"張三",18});
// update
db.execSQL("update user set name=? where id=?",new Object[]{"張三",1});
// delete
db.execSQL("delete from user where id=1");
// query
Cursor cursor = db.rawQuery("select * from user where id=?", new String[]{"1"});
4.SQLite事務
SQLite資料庫同樣支持事務
事務操作后一定要使用
endTransaction()方法關閉事務,當執行到endTransaction()時,首先會檢查是否有事務執行成功標記,有則提交資料庫,無則回滾資料
DBHelper dbHelper = new DBHelper(MainActivity.this, "test.db", null, 0);
// 通過DBHelper類獲取一個讀寫的SQLiteDatabase物件
SQLiteDatabase db = dbHelper.getWritableDatabase();
// 開始事務
db.beginTransaction();
try {
// 標記資料庫事務執行成功
db.setTransactionSuccessful();
}catch (Exception e){
Log.i("事務處理失敗",e.getMessage());
}finally {
db.endTransaction(); //關閉事務
db.close(); // 關閉資料庫
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/278113.html
標籤:其他
上一篇:06-appium-元素定位
