浅谈Android 数据库的使用

浅谈Android 数据库的使用

1.       创建数据库

Android 提供了标准的数据库创建方式。继承SQLiteOpenHelper ,实现onCreate onUpgrade 两个方法,有个好处就是便于数据库版本的升级。

private static class DatabaseHelper extends SQLiteOpenHelper {

        DatabaseHelper(Context context) {

            super(context, DATABASE_NAME, null, DATABASE_VERSION);

        }

        @Override

        public void onCreate(SQLiteDatabase db) {

        }

        @Override

        public void onUpgrade(SQLiteDatabase db, int oldVersion,

int newVersion) {

      

        }

}

2.       操作数据库

之前一直疑惑于一个功能操作是否要每次打开数据库完之后,要立即关闭数据库? 还是一个应用程序只开一次数据库,等到应用程序退出时再关闭数据库? 其中的顾虑在性能和多线程。 想到一个方法 ,将数据库操作类作为单件,将数据库的lock 设置为false. 关闭数据库的lock., 而在每一个Table的修改时加上相应的Table锁。

public class WebViewDatabase {

        public static synchronized WebViewDatabase getInstance(Context context) {

            // use per table Mutex lock, turn off database lock, this

        // improves performance as database's ReentrantLock is expansive

            mDatabase.setLockingEnabled(false);

        }

 

        // synchronize locks

    private final Object mHttpAuthLock = new Object();

 

 

        public boolean hasHttpAuthUsernamePassword() {

        synchronized (mHttpAuthLock) {

            return hasEntries(TABLE_HTTPAUTH_ID);

        }

    }

}

 

想想看,将将底层数据封装成ContentProvider, 供应用程序调用, 标准的做法,就是如果对ContentProvider不是很熟悉的话,就有点麻烦了。

3.       数据显示

Cursor前面说过,是一个指向数据源的随机迭代器显示数据。将View绑定到Cursor通常要设置这样几个参数。一个是每一行的样式,称作Row Layout,其实就是一个普通的LayoutXML文件。还有就是一个列和现实控件的对应关系。那个控件显示哪个列的值,这是需要配置的。为了定制一个良好的数据显示控件,最简单你可以定制很PPRow Layout,复杂一点就是可以重载绑定控件View,或者是适配器ListAdapter

要使用Cursor动态绑定View,每个表有一个_id列。

重新绑定Cursor, 并刷新页面

      Cursor.requery().

      Adapter. notifyDataSetChanged();

 

   想到一个问题,数据量非常大的时候,会不会出现内存不足的现象?  Cursor是动态绑定View. 深入去看android的代码,CursorWindow 内部提供了Buffer, 供将数据库的数据拷贝到该Buffer. 作为View显示的缓冲区,其大小是有限的。根据V iew 的变化重新填充Buffer.

 

4.       导出数据库

我们要查看手机的数据库内容,每次都要从手机导出,然后sqlite 工具查看。其实用adb shell sqlite直接查看手机的数据库, 在这抛砖引玉了,有志之人将其做一个工具,封装sqlite 语句,便可以直接操作手机数据库。

 

具体详看android notepad sample 应用

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值