Android组件系列----ContentProvider内容提供者

Posted ljbguanli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android组件系列----ContentProvider内容提供者相关的知识,希望对你有一定的参考价值。

二、代码举例:

终于全部project文件的文件夹结构例如以下:

5b1e38fc-929c-4587-a2b2-87f060663db5

PersonDao是增删改查数据库的工具类,并在PersonContentProvider中得到调用。DBHelper用于初始化SQLite数据库。

PersonContentProvider用于向外提供增删改查的接口。并终于在ContentResolverTest的Test.java中进行单元測试,实现CRUD。

以下来看一下详细的实现步骤。

新建project文件ContetProviderTest01。

(1)新建类PersonDao:用于进行对SQLite的CRUD操作。代码例如以下:

PersonDao.java:

复制代码
 1 package com.example.contentprovidertest01.dao;
 2 
 3 import android.content.ContentValues;
 4 import android.content.Context;
 5 import android.database.Cursor;
 6 import android.database.sqlite.SQLiteDatabase;
 7 
 8 import com.example.contentprovidertest01.db.DBHelper;
 9 
10 public class PersonDao {
11     private DBHelper helper = null;
12 
13     public PersonDao(Context context) {
14         helper = new DBHelper(context);
15     }
16 
17     //方法:插入操作,返回的long类型为:插入当前行的行号
18     public long insertPerson(ContentValues values) {
19         long id = -1;
20         SQLiteDatabase database = null;
21         try {
22             database = helper.getWritableDatabase();
23             id = database.insert("person", null, values);
24         } catch (Exception e) {
25             e.printStackTrace();
26         } finally {
27             if (database != null) {
28                 database.close();
29             }
30         }
31         return id;
32     }
33 
34     public int deletePerson(String whereClause, String[] whereArgs) {
35         int count = -1;
36         SQLiteDatabase database = null;
37         try {
38             database = helper.getWritableDatabase();
39             count = database.delete("person", whereClause, whereArgs);
40         } catch (Exception e) {
41             e.printStackTrace();
42         } finally {
43             if (database != null) {
44                 database.close();
45             }
46         }
47         return count;
48     }
49 
50     public int updatePerson(ContentValues values, String whereClause,
51             String[] whereArgs) {
52         SQLiteDatabase database = null;
53         int count = -1;
54         try {
55             database = helper.getWritableDatabase();
56             count = database.update("person", values, whereClause, whereArgs);
57         } catch (Exception e) {
58             e.printStackTrace();
59         } finally {
60             if (null != database) {
61                 database.close();
62             }
63         }
64         return count;
65     }
66 
67     public Cursor queryPersons(String selection, String[] selectionArgs) {
68         SQLiteDatabase database = null;
69         Cursor cursor = null;
70         try {
71             database = helper.getReadableDatabase();
72             cursor = database.query(true, "person", null, selection,
73                     selectionArgs, null, null, null, null);
74         } catch (Exception e) {
75             e.printStackTrace();
76         } finally {
77             if (null != database) {
78                 // database.close();
79             }
80         }
81         return cursor;
82     }
83 
84 }
复制代码

以上是关于Android组件系列----ContentProvider内容提供者的主要内容,如果未能解决你的问题,请参考以下文章

Android自己定义组件系列——进阶实践

Android基础系列合集

Android 四大组件系列篇

Android自己定义组件系列——自己定义ViewGroup实现双側滑动

Android回炉系列之四大组件之首Activity

Android自己定义组件系列——自己定义View及ViewGroup