前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android操作位于sd卡上的sqlite数据库

Android操作位于sd卡上的sqlite数据库

作者头像
佛系编码
发布2019-12-11 11:16:19
7020
发布2019-12-11 11:16:19
举报
文章被收录于专栏:Android学习之路Android学习之路

sky-mxc 总结 转载注明出处:https://sky-mxc.github.io

对 sd卡上sqlite 数据库的操作

Android默认的数据库位置是在 data\data\packageName\databases\目录下的; 有时候因为业务需要我们需要操作位于sd卡的数据库,就可以通过重写 Context类的方法来实现

重写 ContextWrapper

我们在创建SqliteOpenHelper实例的时候需要传入一个Context 实例,就是通过他来实现的

代码语言:javascript
复制

public class DBContext extends ContextWrapper {
    public static final String TAG = "DBContext";

    public DBContext(Context base) {
        super(base);
    }

    /**
     * 返回 数据库文件 
     * 重写此方法 返回我们位于sd卡的数据库文件
     * @param name
     * @return
     */
    @Override
    public File getDatabasePath(String name) {
        //位于 sd卡的数据库 初始化时已经创建好了
        File file = new File(Environment.getExternalStorageDirectory().getPath()+"/dbDemo",name);
        return file;
    }

    /**
     * Android 4.0后会调用此方法 还有一个2.3以前的方法就重写了,也没有那么底的版本了
     * @param name
     * @param mode
     * @param factory
     * @param errorHandler
     * @return
     */
    @Override
    public SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory, DatabaseErrorHandler errorHandler) {
       SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name),factory);
        return db;
    }
}

DBHelper

DBHelper

代码语言:javascript
复制
public class DBHelper extends SQLiteOpenHelper {
    public static final String TAG = "DBHelper";

    private  static final String NAME = "test.db";
    private  static final int VERSION = 1;

    private  static DBHelper dbHelpter;

    public static DBHelper getDbHelpter(Context context){
        if (dbHelpter == null){
            dbHelpter = new DBHelper(context);
        }
        return dbHelpter;
    }


    private DBHelper(Context context) {
        super(context, NAME, null, VERSION);
    }


    @Override
    public void onCreate(SQLiteDatabase db) {

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

使用

代码语言:javascript
复制
private void query(){

    DBContext dbContext = new DBContext(this);
    DBHelper helpter = DBHelper.getDbHelpter(dbContext);
    SQLiteDatabase db = helpter.getWritableDatabase();
    Cursor cu = db.query("table1", new String[]{"id", "name", "age"}, null, null, null, null, "id desc", null);
    if (null != cu){
        while (cu.moveToNext()){
            int id = cu.getInt(cu.getColumnIndex("id"));
            String name = cu.getString(cu.getColumnIndex("name"));
            int age = cu.getInt(cu.getColumnIndex("age"));
            Log.e(TAG, "query: id="+id+";name="+name+";age="+age);
        }
        cu.close();
    }
}

参考博客

http://blog.csdn.net/liyulei316686082/article/details/7230709

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-03-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 对 sd卡上sqlite 数据库的操作
    • 重写 ContextWrapper
      • DBHelper
        • 使用
          • 参考博客
          相关产品与服务
          数据库
          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档