色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:7日期:2022-09-19 11:19:53
1.SQLite的特點(diǎn) SQLite是一個(gè)輕量級(jí)數(shù)據(jù)庫,它設(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ù)庫的創(chuàng)建

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

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

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ù)庫名字 * @param factory 游標(biāo)工廠 ,通常是null * @param version 數(shù)據(jù)庫的版本 */ public DBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {super(context, name, factory, version); } /** * 數(shù)據(jù)庫第一次被創(chuàng)建時(shí)調(diào)用該方法 * @param db */ @Override public void onCreate(SQLiteDatabase db) {// 初始化數(shù)據(jù)庫的表結(jié)構(gòu),執(zhí)行一條建表的SQL語句db.execSQL('create table user(u_id int not null primary key,u_name varchar(50) not null,age int)'); } /** * 當(dāng)數(shù)據(jù)庫的版本號(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:contentValuelong 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語句)// 參數(shù)4:表示whereClause語句中的表達(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語句)// 參數(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語句中的 ***部分// 參數(shù)3:selection 查詢條件字句,在條件子句允許使用占位符“?”表示條件值// 參數(shù)4:selectionArgs :對(duì)應(yīng)于 selection參數(shù) 占位符的值// 參數(shù)5:groupby 相當(dāng)于 select *** from table where && group by ... 語句中 ... 的部分// 參數(shù)6:having 相當(dāng)于 select *** from table where && group by ...having %%% 語句中 %%% 的部分// 參數(shù)7:orderBy :相當(dāng)于 select ***from ?? where&& group by ...having %%% order by@@語句中的@@ 部分,如: 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語句進(jìn)行數(shù)據(jù)庫操作

// 通過DBHelper類獲取一個(gè)讀寫的SQLiteDatabase對(duì)象SQLiteDatabase db = dbHelper.getWritableDatabase(); // insertdb.execSQL('insert into user (id,name,age) values (?,?,?)',new Object[]{1,'張三',18});// updatedb.execSQL('update user set name=? where id=?',new Object[]{'張三',1});// deletedb.execSQL('delete from user where id=1');// queryCursor cursor = db.rawQuery('select * from user where id=?', new String[]{'1'});4.SQLite事務(wù)

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

事務(wù)操作后一定要使用endTransaction()方法關(guān)閉事務(wù),當(dāng)執(zhí)行到endTransaction()時(shí),首先會(huì)檢查是否有事務(wù)執(zhí)行成功標(biāo)記,有則提交數(shù)據(jù)庫,無則回滾數(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ù)庫事務(wù)執(zhí)行成功 db.setTransactionSuccessful();}catch (Exception e){ Log.i('事務(wù)處理失敗',e.getMessage());}finally { db.endTransaction(); //關(guān)閉事務(wù) db.close(); // 關(guān)閉數(shù)據(jù)庫}

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

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 日韩欧美一区二区中文字幕 | 欧美一区二区三区免费不卡 | 免费视频一区二区三区四区 | 一级做a爰片性色毛片视频图片 | 色综合91久久精品中文字幕 | 国产精品大全国产精品 | 免费人成年短视频在线观看网站 | a级成人毛片免费视频高清 a级高清观看视频在线看 | 亚洲欧美日韩成人一区在线 | 成人在线视频免费看 | 国产精品久久久久久一级毛片 | 国产精品国产欧美综合一区 | 欧美xxx精品 | 深夜爽爽福利gif在线观看 | 男性吸女下身的视频 | 久久免视频 | 中国一级毛片在线观看 | 国产精品久久久天天影视香蕉 | 草草视频免费在线观看 | 国产成人盗摄精品 | 中文字幕亚洲一区二区va在线 | 欧美在线1 | 成人在线网 | 最新步兵社区在线观看 | 亚洲在线视频免费 | 成人午夜视频免费观看 | 91av小视频 | 成年人激情视频 | aaaa毛片| 免费观看一级特黄三大片视频 | 欧美级| 国产人成精品 | 久色精品 | 午夜国产理论 | 成 人 亚洲 综合天堂 | 亚洲综合色一区二区三区小说 | 国产综合久久久久影院 | 中国精品自拍 | 欧美日韩亚洲国产 | 中文字幕天堂久久精品 | 中文字幕精品在线观看 |