SQLite數(shù)據(jù)庫(kù)的簡(jiǎn)單使用

平時(shí)工作中是真沒(méi)有接觸SQLite本地?cái)?shù)據(jù)庫(kù)非凌,然后在學(xué)習(xí)過(guò)程中秸应,看序列化的時(shí)候(其實(shí)后來(lái)發(fā)現(xiàn)和序列化并沒(méi)有半毛錢(qián)關(guān)系橘霎,很尷尬)蔫浆,突然想到了數(shù)據(jù)庫(kù)這個(gè)東西,很久不用基本上忘的沒(méi)有了姐叁,所以就寫(xiě)個(gè)demo總結(jié)一下使用瓦盛。


對(duì)于SQLite語(yǔ)句不熟悉的,可以使用數(shù)據(jù)庫(kù)工具來(lái)練習(xí)一下
傳送門(mén):數(shù)據(jù)庫(kù)工具SQLite Expert Personal的簡(jiǎn)單使用


如何在Android中簡(jiǎn)單使用SQLite數(shù)據(jù)庫(kù)外潜?我們只需要寫(xiě)兩個(gè)工具類(lèi)來(lái)使用操作就可以了

  1. 創(chuàng)建數(shù)據(jù)庫(kù)的幫助類(lèi) —— DBHelper
    ??我們創(chuàng)建一個(gè)DBHelper去繼承SQLiteOpenHelper原环,然后實(shí)現(xiàn)onCreate和onUpgrade即可,當(dāng)然处窥,構(gòu)造函數(shù)不能忘掉嘱吗。下面的代碼中各部分的注釋就標(biāo)注的很清楚啦!
public class DBHelper extends SQLiteOpenHelper {
    private static final int VERSION = 1;//定義數(shù)據(jù)庫(kù)版本號(hào)
    private static final String DBNAME = "ceshi.db"; //定義數(shù)據(jù)庫(kù)名

    public DBHelper(Context context) {//定義構(gòu)造函數(shù)
        //參數(shù) 上下文 數(shù)據(jù)庫(kù)名稱(chēng) cosor工廠 版本號(hào)
        super(context, DBNAME, null, VERSION);//重寫(xiě)基類(lèi)的構(gòu)造函數(shù)
    }

    @Override
    public void onCreate(SQLiteDatabase db) {//創(chuàng)建數(shù)據(jù)庫(kù)
        //序號(hào)滔驾,姓名谒麦,年齡,登記日期
        db.execSQL("create table ceshi (id varchar(10) primary key, name varchar(200),age varchar(10),date varchar(10))");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//更新數(shù)據(jù)庫(kù)
        //本方法主要用于更新數(shù)據(jù)庫(kù) 通過(guò)對(duì)當(dāng)前版本的判斷 實(shí)現(xiàn)數(shù)據(jù)庫(kù)的更新
        }
}
  1. 創(chuàng)建增刪改查的工具類(lèi) —— CeshiDao
    ??我這里只是簡(jiǎn)單的實(shí)現(xiàn)了數(shù)據(jù)庫(kù)的增刪改查功能
  • 插入數(shù)據(jù),這里使用replace而沒(méi)有使用insert的原因是哆致,我的表里的id字段建立了唯一索引绕德,所以如果insert使用已經(jīng)存在的鍵值插入一條記錄,會(huì)拋出一 個(gè)主鍵沖突的錯(cuò)誤沽瞭,使用replace則會(huì)直接替換掉原來(lái)的數(shù)據(jù)迁匠。所以我使用了replace
  /*插入*/
    public void insertDao(Ceshi ceshi) {
        db = helper.getWritableDatabase();//初始化SQLiteDatabase對(duì)象
        //執(zhí)行插入操作
        db.execSQL("replace into ceshi (id,name,age,date) values (?,?,?,?)",
                new Object[]{
                        ceshi.getId(),
                        ceshi.getName(),
                        ceshi.getAge(),
                        ceshi.getDate()
                });
    }
  • 刪除數(shù)據(jù)
/*刪除*/
    public void deleteDao(Integer... ids) {
        if (ids.length > 0) {//判斷是否存在要?jiǎng)h除的id
            StringBuffer sb = new StringBuffer();// 創(chuàng)建StringBuffer對(duì)象
            for (int i = 0; i < ids.length; i++)// 遍歷要?jiǎng)h除的id集合
            {
                sb.append('?').append(',');// 將刪除條件添加到StringBuffer對(duì)象中
            }
            sb.deleteCharAt(sb.length() - 1);// 去掉最后一個(gè)“,“字符
            db = helper.getWritableDatabase();// 初始化SQLiteDatabase對(duì)象
            // 執(zhí)行刪除收入信息操作
            db.execSQL("delete from ceshi where id in (" + sb + ")",
                    (Object[]) ids);
        }
    }
  • 更新修改數(shù)據(jù)
  /*修改*/
    public void updateDao(Ceshi ceshi) {
        db = helper.getWritableDatabase();// 初始化SQLiteDatabase對(duì)象
        // 執(zhí)行修改收入信息操作
        db.execSQL(
                "update ceshi set name=?,age= ?,date=? where id= ?",
                new Object[]{
                        ceshi.getName(),
                        ceshi.getAge(),
                        ceshi.getDate(),
                        ceshi.getId()
                });
    }
  • 查詢(xún)單個(gè)數(shù)據(jù)
/*查詢(xún)*/
    public Ceshi findDao(int id) {
        db = helper.getWritableDatabase();// 初始化SQLiteDatabase對(duì)象
        Cursor cursor = db
                .rawQuery(
                        "select id,name,age,date from ceshi where id= ?",
                        new String[]{String.valueOf(id)});// 根據(jù)編號(hào)查找,并存儲(chǔ)到Cursor類(lèi)中
        if (cursor.moveToNext())// 遍歷查找到的收入信息
        {
            // 將遍歷到的收入信息存儲(chǔ)到Tb_inaccount類(lèi)中
            return new Ceshi(
                    cursor.getInt(cursor.getColumnIndex("id")),
                    cursor.getString(cursor.getColumnIndex("name")),
                    cursor.getInt(cursor.getColumnIndex("age")),
                    cursor.getLong(cursor.getColumnIndex("date"))
            );
        }
        return null;
    }
  • 查詢(xún)所有數(shù)據(jù)
 /*獲取所有數(shù)據(jù)*/
    public List<Ceshi> getAllData() {
        List<Ceshi> csList= new ArrayList<Ceshi>();// 創(chuàng)建集合對(duì)象
        db = helper.getWritableDatabase();// 初始化SQLiteDatabase對(duì)象
        // 獲取所有收入信息
        Cursor cursor = db.rawQuery("select * from ceshi", null);
        while (cursor.moveToNext())// 遍歷所有的收入信息
        {
            // 將遍歷到的收入信息添加到集合中
            csList.add(new Ceshi(
                    cursor.getInt(cursor.getColumnIndex("id")),
                    cursor.getString(cursor.getColumnIndex("name")),
                    cursor.getInt(cursor.getColumnIndex("age")),
                    cursor.getLong(cursor.getColumnIndex("date"))
            ));
        }
        return csList;// 返回集合
    }

如果有不對(duì)的地方需要改正的驹溃,歡迎提出建議
歡迎關(guān)注我的Github:ContentMy
最后附上項(xiàng)目地址:SQLiteDemo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市延曙,隨后出現(xiàn)的幾起案子豌鹤,更是在濱河造成了極大的恐慌,老刑警劉巖枝缔,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件布疙,死亡現(xiàn)場(chǎng)離奇詭異蚊惯,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)灵临,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)截型,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人儒溉,你說(shuō)我怎么就攤上這事宦焦。” “怎么了顿涣?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵波闹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我涛碑,道長(zhǎng)精堕,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任蒲障,我火速辦了婚禮歹篓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘揉阎。我一直安慰自己庄撮,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布余黎。 她就那樣靜靜地躺著重窟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惧财。 梳的紋絲不亂的頭發(fā)上巡扇,一...
    開(kāi)封第一講書(shū)人閱讀 51,365評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音垮衷,去河邊找鬼厅翔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛搀突,可吹牛的內(nèi)容都是我干的刀闷。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼仰迁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼甸昏!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起徐许,我...
    開(kāi)封第一講書(shū)人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤施蜜,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后雌隅,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體翻默,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缸沃,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了修械。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趾牧。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖肯污,靈堂內(nèi)的尸體忽然破棺而出翘单,到底是詐尸還是另有隱情,我是刑警寧澤仇箱,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布县恕,位于F島的核電站,受9級(jí)特大地震影響剂桥,放射性物質(zhì)發(fā)生泄漏忠烛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一权逗、第九天 我趴在偏房一處隱蔽的房頂上張望美尸。 院中可真熱鬧,春花似錦斟薇、人聲如沸师坎。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)胯陋。三九已至,卻和暖如春袱箱,著一層夾襖步出監(jiān)牢的瞬間遏乔,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工发笔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盟萨,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓了讨,卻偏偏與公主長(zhǎng)得像捻激,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子前计,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • DEMO地址下載 創(chuàng)建數(shù)據(jù)庫(kù): 一:接下來(lái)如果該數(shù)據(jù)庫(kù)不存在需要?jiǎng)?chuàng)建這個(gè)數(shù)據(jù)庫(kù)胞谭,創(chuàng)建的過(guò)程寫(xiě)在viewDidLoa...
    雷鳴1010閱讀 368評(píng)論 0 1
  • 1、通過(guò)CocoaPods安裝項(xiàng)目名稱(chēng)項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明先生_X自主閱讀 15,980評(píng)論 3 119
  • 一男杈、“自主互助學(xué)習(xí)型課堂”是指學(xué)生在小組中為了完成共同的任務(wù)韭赘,有明確責(zé)任分工的合作交流性學(xué)習(xí)。在這一學(xué)習(xí)過(guò)程中势就,學(xué)...
    sailor66閱讀 494評(píng)論 0 0
  • 王家衛(wèi)有一次讓他的演員翻譯 I LOVE YOU泉瞻,有的演員翻譯成我愛(ài)你。王說(shuō)苞冯,怎么可以講這樣的話(huà)袖牙,應(yīng)該是“我已經(jīng)好...
    SnakkkkkeYy閱讀 312評(píng)論 0 0