欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

android中SQLite使用及特點

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

1.SQLite的特點

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

2.SQLite的使用

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

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

在這里插入圖片描述

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


public class DBHelper extends SQLiteOpenHelper {

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

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

    /**
     * 當數(shù)據庫的版本號增加調用
     * @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();
        // 創(chuàng)建ContentValue設置參數(shù)
        ContentValues contentValues=new ContentValues();
        contentValues.put("name",name);
        contentValues.put("age",age);
        // 插入數(shù)據
        // insert方法參數(shù)1:要插入的表名
        // insert方法參數(shù)2:如果發(fā)現(xiàn)將要插入的行為空時,會將這個列名的值設為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類獲取一個讀寫的SQLiteDatabase對象
        SQLiteDatabase db=dbHelper.getWritableDatabase();
        // 創(chuàng)建ContentValue設置參數(shù)
        ContentValues contentValues=new ContentValues();
        contentValues.put("age",age);
        // 修改數(shù)據
        // 參數(shù)1:tablename
        // 參數(shù)2:修改的值
        // 參數(shù)3:修改的條件(SQL where語句)
        // 參數(shù)4:表示whereClause語句中的表達式的占位符參數(shù)列表,這些字符串會替換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();
        // 參數(shù)1:tablename
        // 參數(shù)2:刪除的條件(SQL語句)
        // 參數(shù)3:給修改的條件注入參數(shù),一個或多個
        db.delete("user", "u_id=?", new String[]{id + ""});
        // 釋放連接
        db.close();
    }

2.5查詢(query)

 public void query() {
        // 通過DBHelper類獲取一個讀寫的SQLiteDatabase對象
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        // 參數(shù)1:table_name
        // 參數(shù)2:columns 要查詢出來的列名。相當于 select  *** from table語句中的 ***部分
        // 參數(shù)3:selection 查詢條件字句,在條件子句允許使用占位符“?”表示條件值
        // 參數(shù)4:selectionArgs :對應于 selection參數(shù) 占位符的值
        // 參數(shù)5:groupby 相當于 select *** from table where && group by ... 語句中 ... 的部分
        // 參數(shù)6:having 相當于 select *** from table where && group by ...having %%% 語句中 %%% 的部分
        // 參數(shù)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()) { // 游標只要不是在最后一行之后,就一直循環(huán)

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

        }
        
        db.close();
    }

3.使用SQL語句進行數(shù)據庫操作

// 通過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數(shù)據庫同樣支持事務

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

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

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

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

相關文章

  • Android實現(xiàn)自動匹配關鍵字并且標紅功能

    Android實現(xiàn)自動匹配關鍵字并且標紅功能

    這篇文章主要為大家詳細介紹了Android實現(xiàn)自動匹配關鍵字并且標紅功能,單關鍵字和多關鍵字進行匹配,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Android使用Intent獲取聯(lián)系人信息

    Android使用Intent獲取聯(lián)系人信息

    這篇文章主要為大家詳細介紹了Android Intent的使用方法,Android如何獲取聯(lián)系人信息,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Android中為activity創(chuàng)建菜單

    Android中為activity創(chuàng)建菜單

    這篇文章主要為大家詳細介紹了Android中為activity創(chuàng)建菜單的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Andriod開發(fā)中引入jar包的正確方式介紹

    Andriod開發(fā)中引入jar包的正確方式介紹

    andriod中如果引入jar包的方式不對就會出現(xiàn)一些奇怪的錯誤,用了很長時間才解決出現(xiàn)的bug,下面與大家分享下正確引入jar包的方式
    2013-06-06
  • ExpandListView實現(xiàn)下拉列表案例

    ExpandListView實現(xiàn)下拉列表案例

    這篇文章主要為大家詳細介紹了ExpandListView實現(xiàn)下拉列表案例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Android Studio導入jar包過程詳解

    Android Studio導入jar包過程詳解

    這篇文章主要介紹了Android Studio導入jar包過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • android安裝后啟動出錯解決

    android安裝后啟動出錯解決

    大家好,本篇文章主要講的是android安裝后啟動出錯解決,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • android ListView和GridView拖拽移位實現(xiàn)代碼

    android ListView和GridView拖拽移位實現(xiàn)代碼

    有些朋友對android中ListView和GridView拖拽移位功能的實現(xiàn)不是很了解,接下來將詳細介紹,需要了解的朋友可以參考下
    2012-12-12
  • Android自定義textview實現(xiàn)豎直滾動跑馬燈效果

    Android自定義textview實現(xiàn)豎直滾動跑馬燈效果

    這篇文章主要為大家詳細介紹了Android自定義textview實現(xiàn)豎直滾動跑馬燈效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Android基礎知識之frame動畫效果

    Android基礎知識之frame動畫效果

    Android基礎知識之tween動畫效果,Android一共提供了兩種動畫,這篇文章主要介紹了Android動畫效果之frame動畫,感興趣的小伙伴們可以參考一下
    2016-06-06

最新評論