日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android数据存储之SQLite的操作

發(fā)布時間:2025/5/22 Android 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android数据存储之SQLite的操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

 Android作為一個應(yīng)用在移動設(shè)備上的操作系統(tǒng),自然也就少不了數(shù)據(jù)的存儲。然而SQLite作為一個輕型的關(guān)系型數(shù)據(jù)庫,基于其輕量、跨平臺、多語言接口及安全性等諸多因數(shù)考慮,因而Android較大的數(shù)據(jù)存儲采用了SQLite。SQLite與大多數(shù)關(guān)系型數(shù)據(jù)庫一樣都遵循ACID,語法也非常相似。只要您懂得mysql、sqlserver等關(guān)系型數(shù)據(jù)庫的操作,只要查看下SQLite的官方文檔便可快速上手。SQLite語法您可通過http://sqlite.org/lang.html進(jìn)行查看。

  接下來看看Android是怎樣操作SQLite的吧。Android下只要擴(kuò)展SQLiteOpenHelper接口,并實(shí)現(xiàn)其Create和update方法便可以便捷地對SQLite進(jìn)行管理。下面看下數(shù)據(jù)庫管理類。

package com.example.ibm.myappsqllite;import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper;/*** Created by ibm on 2015/9/11.*/ public class Db extends SQLiteOpenHelper {public Db(Context context, int version) {super(context, "db", null, version);//可以根據(jù)最后一個參數(shù)的version來完成表的自動創(chuàng)建和升級 }@Overridepublic void onCreate(SQLiteDatabase db) {String sql = "CREATE TABLE user(" +"id integer primary key autoincrement, " +"name TEXT DEFAULT \"\"," + "sex TEXT DEFAULT \"\")";System.out.println("創(chuàng)建數(shù)據(jù)庫:" + sql);db.execSQL(sql);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//更新數(shù)據(jù)庫String sql = "ALTER TABLE user ADD COLUMN mark TEXT DEFAULT \"\"";System.out.println("更新數(shù)據(jù)庫:" + sql);db.execSQL(sql);} }

  在MainActivity.java中的onCreate方法添加如下代碼。

Db db = new Db(this, 1);//清空數(shù)據(jù)SQLiteDatabase sqLiteDb = db.getWritableDatabase();System.out.println("------------清空表數(shù)據(jù)------------");sqLiteDb.delete("user", null, null);System.out.println("------------充值表自增ID------------");sqLiteDb.execSQL("update sqlite_sequence SET seq = 0 where name ='user';");//重置id sqLiteDb.close();// 寫入數(shù)據(jù)System.out.println("------------寫入數(shù)據(jù)------------");sqLiteDb = db.getWritableDatabase();ContentValues cv = new ContentValues();cv.put("name", "王五");cv.put("sex", "男");sqLiteDb.insert("user", null, cv);cv = new ContentValues();cv.put("name", "李利");cv.put("sex", "女");sqLiteDb.insert("user", null, cv);sqLiteDb.close();// 查詢數(shù)據(jù)db = new Db(this, 2);System.out.println("------------查詢數(shù)據(jù)1------------");SQLiteDatabase sqLiteDbup = db.getReadableDatabase();Cursor c = sqLiteDbup.query("user", new String[]{"id", "name", "sex"}, null, null, null, null, null);while (c.moveToNext()) {Integer id = c.getInt(c.getColumnIndex("id"));String name = c.getString(c.getColumnIndex("name"));String sex = c.getString(c.getColumnIndex("sex"));System.out.println(String.format("id: %d, name: %s, sex: %s", id, name, sex));}sqLiteDbup.close();//更新數(shù)據(jù)System.out.println("------------更新數(shù)據(jù)------------");SQLiteDatabase sqldb = db.getWritableDatabase();ContentValues contentValues = new ContentValues();contentValues.put("sex", "gay");contentValues.put("mark", "wang wu is gay");String[] whereValues = {"王五"};sqldb.update("user", contentValues, "name = ?", whereValues);sqldb.close();// 查詢數(shù)據(jù)System.out.println("------------查詢數(shù)據(jù)2------------");sqLiteDbup = db.getReadableDatabase();c = sqLiteDbup.query("user", new String[]{"id", "name", "sex", "mark"}, null, null, null, null, null);while (c.moveToNext()) {Integer id = c.getInt(c.getColumnIndex("id"));String name = c.getString(c.getColumnIndex("name"));String sex = c.getString(c.getColumnIndex("sex"));String mark = c.getString(c.getColumnIndex("mark"));System.out.println(String.format("id: %d, name: %s, sex: %s, mark: %s", id, name, sex, mark));}sqLiteDbup.close();//刪除數(shù)據(jù)System.out.println("------------刪除數(shù)據(jù)------------");sqldb = db.getWritableDatabase();String[] delWhere = {"李利"};sqldb.delete("user", "name = ?", delWhere);sqldb.close();// 查詢數(shù)據(jù)System.out.println("------------查詢數(shù)據(jù)3------------");sqLiteDbup = db.getReadableDatabase();c = sqLiteDbup.query("user", new String[]{"id", "name", "sex", "mark"}, null, null, null, null, null);while (c.moveToNext()) {Integer id = c.getInt(c.getColumnIndex("id"));String name = c.getString(c.getColumnIndex("name"));String sex = c.getString(c.getColumnIndex("sex"));String mark = c.getString(c.getColumnIndex("mark"));System.out.println(String.format("id: %d, name: %s, sex: %s, mark: %s", id, name, sex, mark));}sqLiteDbup.close();db.close();

  將應(yīng)用運(yùn)行到虛擬機(jī)后,你可以看到如下結(jié)果

09-11 18:58:29.460 6647-6647/com.example.ibm.myappsqllite I/System.out﹕ 創(chuàng)建數(shù)據(jù)庫:CREATE TABLE user(id integer primary key autoincrement, name TEXT DEFAULT "",sex TEXT DEFAULT "") 09-11 18:58:29.500 6647-6647/com.example.ibm.myappsqllite I/System.out﹕ ------------清空表數(shù)據(jù)------------ 09-11 18:58:29.532 6647-6647/com.example.ibm.myappsqllite I/System.out﹕ ------------充值表自增ID------------ 09-11 18:58:29.532 6647-6647/com.example.ibm.myappsqllite I/System.out﹕ ------------寫入數(shù)據(jù)------------ 09-11 18:58:29.616 6647-6647/com.example.ibm.myappsqllite I/System.out﹕ ------------查詢數(shù)據(jù)1------------ 09-11 18:58:29.628 6647-6647/com.example.ibm.myappsqllite I/System.out﹕ 更新數(shù)據(jù)庫:ALTER TABLE user ADD COLUMN mark TEXT DEFAULT "" 09-11 18:58:29.640 6647-6647/com.example.ibm.myappsqllite I/System.out﹕ id: 1, name: 王五, sex: 男 09-11 18:58:29.644 6647-6647/com.example.ibm.myappsqllite I/System.out﹕ id: 2, name: 李利, sex: 女 09-11 18:58:29.644 6647-6647/com.example.ibm.myappsqllite I/System.out﹕ ------------更新數(shù)據(jù)------------ 09-11 18:58:29.668 6647-6647/com.example.ibm.myappsqllite I/System.out﹕ ------------查詢數(shù)據(jù)2------------ 09-11 18:58:29.684 6647-6647/com.example.ibm.myappsqllite I/System.out﹕ id: 1, name: 王五, sex: gay, mark: wang wu is gay 09-11 18:58:29.684 6647-6647/com.example.ibm.myappsqllite I/System.out﹕ id: 2, name: 李利, sex: 女, mark: 09-11 18:58:29.688 6647-6647/com.example.ibm.myappsqllite I/System.out﹕ ------------刪除數(shù)據(jù)------------ 09-11 18:58:29.708 6647-6647/com.example.ibm.myappsqllite I/System.out﹕ ------------查詢數(shù)據(jù)3------------ 09-11 18:58:29.716 6647-6647/com.example.ibm.myappsqllite I/System.out﹕ id: 1, name: 王五, sex: gay, mark: wang wu is gay

  此時可以查看下模擬器中的/data/data/項(xiàng)目包/databases/目錄下,已經(jīng)存在了一個db數(shù)據(jù)庫(名字為前面定義的數(shù)據(jù)庫名)。






本文轉(zhuǎn)自秋楓博客園博客,原文鏈接:http://www.cnblogs.com/rwxwsblog/p/4801973.html,如需轉(zhuǎn)載請自行聯(lián)系原作者

總結(jié)

以上是生活随笔為你收集整理的Android数据存储之SQLite的操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产人妻精品午夜福利免费 | 亚洲成人黄色 | 欧美日韩高清丝袜 | 亚洲а∨天堂久久精品2021 | 狠狠干狠狠干狠狠干 | 日日噜夜夜噜 | 无人在线观看的免费高清视频 | 婷婷激情五月综合 | 国产视频一区二区三区在线 | 成人自拍av | 精品无码国产av一区二区三区 | 一区二区三区蜜桃 | 天堂在线免费视频 | 在线精品视频播放 | 日本黄色成人 | 国产精品久久久一区二区三区 | 国产激情在线视频 | 一级片啪啪 | 欧美精品自拍视频 | 国内自拍青青草 | 国产欧美a | av大西瓜 | 欧美在线免费看 | 日韩中文字幕久久 | 蕾丝视频污 | 4438全国成人免费 | 亚洲日本成人在线观看 | 久久精品牌麻豆国产大山 | 日日噜噜夜夜狠狠久久丁香五月 | 中文在线免费看视频 | av免费看片 | 亚洲美女综合网 | 亚洲视频图片小说 | 天堂va蜜桃 | 成人精品国产免费网站 | yy6080久久| 欧美黑人欧美精品刺激 | 思思99精品视频在线观看 | 97香蕉久久夜色精品国产 | 嫩草一区 | 中文字幕爱爱 | 99热自拍偷拍 | 丰满白嫩尤物一区二区 | 亚洲aⅴ网站 | a级片免费看 | 伊人青青久久 | 国产成人三级在线 | 成人小视频在线看 | 色婷婷av一区二区三区gif | 在线观看日韩av | 乳孔很大能进去的av番号 | 欧美日韩国产片 | 久久福利精品 | 牲欲强的熟妇农村老妇女视频 | 97精品人妻麻豆一区二区 | 精品一区二区中文字幕 | 最新91视频 | 麻豆av在线看 | 成人综合色站 | 亚洲最新av网站 | 日韩天堂一区 | 五月婷婷影院 | 91精品国产91久久久久久黑人 | 99婷婷| 亚洲做受高潮无遮挡 | 成人淫片 | 自拍偷拍导航 | 色综合99| 日本免费三片在线播放 | av日日夜夜 | 亚洲精品国产精品国自产 | 男女国产视频 | 涩涩涩999 | 99国产精品免费 | 欧美性受xxxx黑人xyx | 亚洲精品短视频 | 欧美乱妇狂野欧美在线视频 | 草草视频在线播放 | 18视频网站在线观看 | 激情图片网站 | 狠狠操人人干 | 亚洲巨乳在线 | 神马午夜场 | 黄色com | 奇米成人网 | 天天干天天操天天插 | 久久久久久999 | 污污视频网站在线免费观看 | 黄色成人毛片 | 久久久性色精品国产免费观看 | 日本无遮羞调教打屁股网站 | 中文字母av | 大肉大捧一进一出视频 | 国产精品无码无卡无需播放器 | 黑丝美女一区二区 | 国产精品jizz在线观看老狼 | 日少妇av| 国内一区二区三区 | 免费成人美女女电影 |