最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

android中SQLite使用及特點(diǎn)

 更新時(shí)間:2021年04月20日 14:28:00   作者:窮少年  
SQLite是一個(gè)輕量級(jí)數(shù)據(jù)庫(kù),它設(shè)計(jì)目標(biāo)是嵌入式的,而且占用資源非常低,本文重點(diǎn)給大家介紹android中SQLite使用及特點(diǎn),感興趣的朋友跟隨小編一起看看吧

1.SQLite的特點(diǎn)

  • SQLite是一個(gè)輕量級(jí)數(shù)據(jù)庫(kù),它設(shè)計(jì)目標(biāo)是嵌入式的,而且占用資源非常低
  • SQLite沒有服務(wù)器進(jìn)程,通過文件保存數(shù)據(jù),該文件是跨平臺(tái)的
  • 支持null,integer,real,text,blob五種數(shù)據(jù)類型,實(shí)際上SQLite也接受varchar,char,decimal等數(shù)據(jù)類型,只不過在運(yùn)算中或保存時(shí)會(huì)轉(zhuǎn)換成對(duì)應(yīng)的5種數(shù)據(jù)類型,因此,可以將各種類型數(shù)據(jù)保存到任何字段中

2.SQLite的使用

 2.1數(shù)據(jù)庫(kù)的創(chuàng)建

在android中,創(chuàng)建SQLite數(shù)據(jù)庫(kù)非常簡(jiǎn)單。Android系統(tǒng)推薦使用SQLiteOpenHelper的子類創(chuàng)建數(shù)據(jù)庫(kù),因此需要?jiǎng)?chuàng)建一個(gè)類繼承自SQLiteOpenHelper,并重寫該類的onCreateonUpgrade方法即可

在這里插入圖片描述

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;


public class DBHelper extends SQLiteOpenHelper {

    /**
     * 作為SQLiteOpenHelper子類必須有的構(gòu)造方法
     * @param context 上下文參數(shù)
     * @param name 數(shù)據(jù)庫(kù)名字
     * @param factory 游標(biāo)工廠 ,通常是null
     * @param version 數(shù)據(jù)庫(kù)的版本
     */
    public DBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    /**
     * 數(shù)據(jù)庫(kù)第一次被創(chuàng)建時(shí)調(diào)用該方法
     * @param db
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        // 初始化數(shù)據(jù)庫(kù)的表結(jié)構(gòu),執(zhí)行一條建表的SQL語(yǔ)句
        db.execSQL("create table user(u_id int not null primary key,u_name varchar(50) not null,age int)");
    }

    /**
     * 當(dāng)數(shù)據(jù)庫(kù)的版本號(hào)增加調(diào)用
     * @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類獲取一個(gè)讀寫的SQLiteDatabase對(duì)象
        SQLiteDatabase db=dbHelper.getWritableDatabase();
        // 創(chuàng)建ContentValue設(shè)置參數(shù)
        ContentValues contentValues=new ContentValues();
        contentValues.put("name",name);
        contentValues.put("age",age);
        // 插入數(shù)據(jù)
        // insert方法參數(shù)1:要插入的表名
        // insert方法參數(shù)2:如果發(fā)現(xiàn)將要插入的行為空時(shí),會(huì)將這個(gè)列名的值設(shè)為null
        // insert方法參數(shù)3:contentValue
        long i=db.insert("user",null ,contentValues);

        // 釋放連接
        db.close();
    }

2.3修改(update)

 public void update(String name,int age){
        // 通過DBHelper類獲取一個(gè)讀寫的SQLiteDatabase對(duì)象
        SQLiteDatabase db=dbHelper.getWritableDatabase();
        // 創(chuàng)建ContentValue設(shè)置參數(shù)
        ContentValues contentValues=new ContentValues();
        contentValues.put("age",age);
        // 修改數(shù)據(jù)
        // 參數(shù)1:tablename
        // 參數(shù)2:修改的值
        // 參數(shù)3:修改的條件(SQL where語(yǔ)句)
        // 參數(shù)4:表示whereClause語(yǔ)句中的表達(dá)式的占位符參數(shù)列表,這些字符串會(huì)替換where條件中?
        db.update("user",contentValues,"name=?",new String[]{name});

        // 釋放連接
        db.close();
    }

2.4刪除(delete)

 public void delete(long id) {
        // 通過DBHelper類獲取一個(gè)讀寫的SQLiteDatabase對(duì)象
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        // 參數(shù)1:tablename
        // 參數(shù)2:刪除的條件(SQL語(yǔ)句)
        // 參數(shù)3:給修改的條件注入?yún)?shù),一個(gè)或多個(gè)
        db.delete("user", "u_id=?", new String[]{id + ""});
        // 釋放連接
        db.close();
    }

2.5查詢(query)

 public void query() {
        // 通過DBHelper類獲取一個(gè)讀寫的SQLiteDatabase對(duì)象
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        // 參數(shù)1:table_name
        // 參數(shù)2:columns 要查詢出來的列名。相當(dāng)于 select  *** from table語(yǔ)句中的 ***部分
        // 參數(shù)3:selection 查詢條件字句,在條件子句允許使用占位符“?”表示條件值
        // 參數(shù)4:selectionArgs :對(duì)應(yīng)于 selection參數(shù) 占位符的值
        // 參數(shù)5:groupby 相當(dāng)于 select *** from table where && group by ... 語(yǔ)句中 ... 的部分
        // 參數(shù)6:having 相當(dāng)于 select *** from table where && group by ...having %%% 語(yǔ)句中 %%% 的部分
        // 參數(shù)7:orderBy :相當(dāng)于 select  ***from ??  where&& group by ...having %%% order by@@語(yǔ)句中的@@ 部分,如: personid desc(按person 降序)
        Cursor cursor = db.query("user", null, null, null, null, null, null);

        // 將游標(biāo)移到開頭
        cursor.moveToFirst();

        while (!cursor.isAfterLast()) { // 游標(biāo)只要不是在最后一行之后,就一直循環(huán)

             int id=cursor.getInt(0);
             String name=cursor.getString(1);
             
             // 將游標(biāo)移到下一行
             cursor.moveToNext();

        }
        
        db.close();
    }

3.使用SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)操作

// 通過DBHelper類獲取一個(gè)讀寫的SQLiteDatabase對(duì)象
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事務(wù)

SQLite數(shù)據(jù)庫(kù)同樣支持事務(wù)

事務(wù)操作后一定要使用endTransaction()方法關(guān)閉事務(wù),當(dāng)執(zhí)行到endTransaction()時(shí),首先會(huì)檢查是否有事務(wù)執(zhí)行成功標(biāo)記,有則提交數(shù)據(jù)庫(kù),無則回滾數(shù)據(jù)

	DBHelper dbHelper = new DBHelper(MainActivity.this, "test.db", null, 0);
        // 通過DBHelper類獲取一個(gè)讀寫的SQLiteDatabase對(duì)象
        SQLiteDatabase db = dbHelper.getWritableDatabase();

        // 開始事務(wù)
        db.beginTransaction();
        try {
            
            // 標(biāo)記數(shù)據(jù)庫(kù)事務(wù)執(zhí)行成功
            db.setTransactionSuccessful();
        }catch (Exception e){
            Log.i("事務(wù)處理失敗",e.getMessage());
        }finally {
            db.endTransaction(); //關(guān)閉事務(wù)
            db.close(); // 關(guān)閉數(shù)據(jù)庫(kù)
        }

到此這篇關(guān)于android中SQLite使用及特點(diǎn)的文章就介紹到這了,更多相關(guān)android使用SQLite內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

霍林郭勒市| 饶平县| 淳化县| 上虞市| 乐至县| 沅陵县| 南康市| 马边| 泰来县| 烟台市| 玉屏| 遵义县| 象山县| 古浪县| 荔浦县| 竹山县| 天水市| 赫章县| 朝阳县| 托里县| 桑植县| 江阴市| 淅川县| 喀喇沁旗| 井陉县| 双牌县| 个旧市| 大名县| 萝北县| 铜鼓县| 洪湖市| 米易县| 隆安县| 平武县| 紫金县| 水城县| 桂阳县| 定陶县| 泸西县| 乐至县| 余干县|