android学习笔记7

23 篇文章 0 订阅

 在使用adb shell中使用sqlite3工具显示中文时,在console上显示的中文字符为乱码,原因在于cmd中的字符集,解决方法,
    在进入cmd中,输入 chcp 65001
   
    ① 完全通过SQLiteDatabase   ② SQLiteOpenHelper  ③ 使用ContentProvider
    ④ 数据库文件的管理
   
    ①:
      SQLiteDatabase sqlite = openOrCreateDatabase("diary.db", MODE, null);
     
    使用Cursor进行ListView数据绑定:
            例如:
      SQLiteDatabase sqlite = openOrCreateDatabase("diary.db", MODE, null);
     Cursor cur = sqlite.query("diary", new String[] {"_id", "title", "content"},
                   null, null, null, null, null);
     // 使用Cursor为Listview绑定数据
     SimpleCursorAdapter curAdapter = new SimpleCursorAdapter(
         this, android.R.layout.simple_list_item_2,
         cur, new String[] {"title", "content"},
         new int[] {android.R.id.text1, android.R.id.text2}
     );
     diaryList.setAdapter(curAdapter);
     
     指定过程与SimpleAdapter类似;
     
     CursorAdapter的使用:
          sqlite = openOrCreateDatabase("diary.db",
       MODE, null);
     cur = sqlite.query("diary", new String[] {"_id", "title", "content"},
       null, null, null, null, null);
       
      CursorAdapter cAdapter = new CursorAdapter(this, cur) {

   @Override
   public void bindView(View view, Context context, Cursor cursor) {
    
    ((TextView)view).setText(cursor.getString(cursor.getColumnIndex("title")));
   }

   @Override
   public View newView(Context context, Cursor cursor, ViewGroup parent) {
    TextView titleLabel = new TextView(MainActivity.this);
    
    return titleLabel;
   }
      
     };
     SimpleCursorAdapter,CursorAdapter需要绑定游标

      SQLiteOpenHelper中处理的数据库,开关,更新
      SQLiteDatabase用以具体的数据库操作
     
      要获得SQLiteOpenHelper的对象,需要写一个类extends SQLiteOpenHelper类,重写构造,onCreate,onUpgrade方法;
     
      数据库文件操作:直接指定数据库文件所在位置/sdcard/databases/diary_db
      在权限控制中,在另一个程序中的获取数据库文件需要使用完整路径;
     
      文件权限:对外权限公开[rwx],则数据库文件公开;
                若文件权限不公开,但类与其同一包路径,访问页不受限制

ContentProvider:
      写一个类继承ContentProvider类,需要重写实际进行数据库操作的方法,在Manifest文件中配置 <provider />组件;
      配置的两个属性android:name的值为继承ContentProvider类的类名,android:authorities值可以随意指定,目前其子类放于
      与主目录在同一包下,在使用ContentResolver进行CRUD操作时,进行Uri对象的创建,content://<android:authorities值>/表名/[#]
      其中#号代表的记录,可以是具体的数字,标识记录id号;
     
 
      优点:① 业务与数据库分离  ② 共享数据,主要通过授权机制完成
     
     
    在Activity中使用Uri对象解析uri地址,对应到Manifest中的注册的provider标签的ContentProvider组件,找到ContentProvider子类,
在Activity中获取getContentResolver()方法,获取ContentResolver对象,常使用的ContentProvider方法有intert(),delete(),query(),
update(),在调用ContentProvider相应方法时,实际使用的是ContentProvider子类中的相应方法,在onCreate方法用以创建SQLiteDatabase
对象。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VoidHope

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值