第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

SQLlite數(shù)據(jù)庫(kù)指定存儲(chǔ)位置

標(biāo)簽:
Android

将我们的数据库放到外设存储,不仅仅放在机器存储中,可以应用到一些需要单独处理或做关键信息备份使用

思路就是使用SQLiteOpenHelper构造方法+自定义ContextWrapper

我们倒着推导一下思路:

1.数据库对象实例化时,需要我们创建SQLiteOpenHelper对象来实现数据库的创建、更新,及后续的数据库操作

2.SQLiteOpenHelper所提供的构造方法,拿到路径,通过该路径创建数据库

下面看实现:

1.继承SQLiteOpenHelper

构造方法:

[代码]java代码:

?


public OurSqlLiteHelper(Context context) {           super(new DataBaseContext(context, String path), database_name, null, version);       }


DataBaseContext(context, String path)从哪来?


2.继承ContextWrapper构造Context,通过构造方法对路径进行赋值。

String ourPath;//被赋值的路径

 

[代码]java代码:

?


public DataBaseContext(Context base, String dirPath) {        super(base);        this.ourPath= dirPath;    }


拿到路径,重写父类方法,创建数据库文件路径:

[代码]java代码:

?


@Override  public File getDatabasePath(String name) {      File result = new File(ourPath+ File.separator + name);       if (!result.getParentFile().exists()) {          result.getParentFile().mkdirs();//路径不存在,创建      }       return result;  }


重写两个重要方法,打开或创建数据库文件:

[代码]java代码:

?


public SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory){return SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name), factory);} @TargetApi(Build.VERSION_CODES.HONEYCOMB)public SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory, DatabaseErrorHandler errorHandler){return SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name).getAbsolutePath(), factory, errorHandler);}


至此,我们自定义数据库路径流程就完成了。

关于数据库的使用方面需要关注的点:

数据库的升级:初学者很容易在数据库升级的时候删除原有数据表,对于不重要的信息没毛病,但是对于一些关键的信息,这样对用户就不是很友好。假设我们只有新增没有删除,我们实际开发中所使用的方式那就应该是这样的:

alter table

sql语句:

 if(oldVersion <变化版本){

               String new_column  = "alter table "+ TABLE_NAME +" add " + 新字段 +" default 默认值 ";

                db.execSQL(new_column);

            }

而不是这样的:

drop table

对于增删改查,由于可能存在应用突然被关闭或杀掉,而我们又需要在出现不可预料问题时保证我们数据的干净,至少不是改了一半,此时我们需要用到事物Transaction,养成良好习惯:拿到数据库对象后,开启事物beginTransaction,执行完insert,update,delete后setTransactionSuccessful成功提交,以免回滚。最后关闭资源前endTransaction结束我们的事物

原文链接:http://www.apkbus.com/blog-35555-68612.html

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消