个人记录
  1. public class DataBaseContentProvider extends ContentProvider {
  2.  
  3. private SQLiteOpenHelper mSQLiteOpenHelper;
  4.  
  5. private SQLiteDatabase db;
  6. /**
  7. * URI
  8. */
  9. private static final UriMatcher URIMATCHER = new UriMatcher(
  10. UriMatcher.NO_MATCH);
  11.  
  12. private static final int URI_MATCH_USER = 0;
  13.  
  14. private static final int URI_MATCH_FRIEND = 1;
  15.  
  16. private static final int URI_MATCH_TALK = 2;
  17.  
  18. private static final int URI_MATCH_COMMENT = 3;
  19.  
  20. private static final int URI_MATCH_ALARM = 4;
  21.  
  22. static {
  23. URIMATCHER.addURI(Constants.AUTHORITY, FriendTable.TABLE_NAME,
  24. URI_MATCH_FRIEND);
  25.  
  26. URIMATCHER.addURI(Constants.AUTHORITY, UserTable.TABLE_NAME,
  27. URI_MATCH_USER);
  28.  
  29. URIMATCHER.addURI(Constants.AUTHORITY, TalkTable.TABLE_NAME,
  30. URI_MATCH_TALK);
  31.  
  32. URIMATCHER.addURI(Constants.AUTHORITY, CommentTable.TABLE_NAME,
  33. URI_MATCH_COMMENT);
  34.  
  35. URIMATCHER.addURI(Constants.AUTHORITY,AlarmTable.TABLE_NAME,
  36. URI_MATCH_ALARM);
  37.  
  38. }
  39.  
  40. @Override
  41. public boolean onCreate() {
  42. // TODO Auto-generated method stub
  43. mSQLiteOpenHelper = DataBaseHelper.getInstance(getContext());
  44. db = mSQLiteOpenHelper.getWritableDatabase();
  45. return true;
  46. }
  47.  
  48. /**
  49. * 返回要查询的表名
  50. */
  51. private String getTableNameByUri(Uri uri) {
  52. if (uri == null) {
  53. return null;
  54. }
  55. int match = URIMATCHER.match(uri);
  56. switch (match) {
  57. case URI_MATCH_USER:
  58. return UserTable.TABLE_NAME;
  59.  
  60. case URI_MATCH_FRIEND:
  61. return FriendTable.TABLE_NAME;
  62.  
  63. case URI_MATCH_TALK:
  64. return TalkTable.TABLE_NAME;
  65.  
  66. case URI_MATCH_COMMENT:
  67. return CommentTable.TABLE_NAME;
  68.  
  69. case URI_MATCH_ALARM:
  70. return AlarmTable.TABLE_NAME;
  71.  
  72. default:
  73. throw new IllegalArgumentException(
  74. "DataBaseContentProvider getTableNameByUri");
  75. }
  76. }
  77.  
  78. @Override
  79. public int delete(Uri url, String where, String[] whereArgs) {
  80. // TODO Auto-generated method stub
  81. int match = URIMATCHER.match(url);
  82. if (match == UriMatcher.NO_MATCH) {
  83. throw new IllegalArgumentException("Unknown URL");
  84. }
  85.  
  86. int count = db.delete(getTableNameByUri(url), where, whereArgs);
  87. ContentResolver cr = getContext().getContentResolver();
  88. cr.notifyChange(url, null);
  89. return count;
  90. }
  91.  
  92. @Override
  93. public String getType(Uri arg0) {
  94. // TODO Auto-generated method stub
  95.  
  96. switch (URIMATCHER.match(arg0)) {
  97. case URI_MATCH_USER:
  98. return UserTable.CONTENT_TYPE;
  99. case URI_MATCH_FRIEND:
  100. return FriendTable.CONTENT_TYPE;
  101. case URI_MATCH_TALK:
  102. return TalkTable.CONTENT_TYPE;
  103. case URI_MATCH_COMMENT:
  104. return CommentTable.CONTENT_TYPE;
  105. case URI_MATCH_ALARM:
  106. return AlarmTable.CONTENT_TYPE;
  107. default:
  108. throw new IllegalArgumentException(
  109. "DataBaseContentProvider getType");
  110. }
  111. }
  112.  
  113. @Override
  114. public Uri insert(Uri uri, ContentValues values) {
  115. // TODO Auto-generated method stub
  116.  
  117. int match = URIMATCHER.match(uri);
  118. Uri rtUri = null;
  119. long rowId = db.replace(getTableNameByUri(uri), null, values);
  120. if (rowId > 0) {
  121. rtUri = ContentUris.withAppendedId(uri, rowId);
  122. }
  123. ContentResolver cr = getContext().getContentResolver();
  124. cr.notifyChange(uri, null);
  125. return rtUri;
  126. }
  127.  
  128. @Override
  129. public Cursor query(Uri uri, String[] projection, String selection,
  130. String[] selectionArgs, String sortOrder) {
  131. // TODO Auto-generated method stub
  132. String tableName = this.getTableNameByUri(uri);
  133. Cursor c = db.query(tableName, projection, selection, selectionArgs,
  134. null, null, sortOrder, null);
  135. c.setNotificationUri(getContext().getContentResolver(), uri);
  136. return c;
  137. }
  138.  
  139. @Override
  140. public int update(Uri uri, ContentValues values, String selection,
  141. String[] selectionArgs) {
  142. // TODO Auto-generated method stub
  143. String tableName = this.getTableNameByUri(uri);
  144. int rt = db.update(tableName, values, selection, selectionArgs);
  145. ContentResolver cr = getContext().getContentResolver();
  146. cr.notifyChange(uri, null);
  147. return rt;
  148. }
  149.  
  150. }
  1. <provider android:name="com.winning.cqs.pregnantbabycare_cqs_v1.db.DataBaseContentProvider"
  2. android:authorities="com.winning.cqs.pregnantbabycare_cqs_v1"
  3. android:multiprocess="true" >
  4. </provider>
  1. public class User implements Serializable {
  2.  
  3. private static final long serialVersionUID = 1L;
  4.  
  5. public int _id;
  6. public String hospitalHost;
  7. public String hospitalName;
  8. public String lastModify;
  9. public String idNo;
  10. public String mobile;
  11. public String name;
  12. public String hospitalCode;
  13. public String dueDate;
  14. public Integer activity;
  15. public Integer yxtUserID;
  16. public String nick;
  17. public String cardTypeDis;
  18. public Integer hospitalID;
  19. public int id;
  20. public Integer yxtMemberID;
  21. public Integer defaultPatientID;
  22. public String address;
  23. public Integer lastPregnancyID;
  24. public String createDate;
  25. public String cardNo;
  26. public String medicalNo;
  27. public Integer patientID;
  28.  
  29. public static String saveUserToDB(ContentResolver cr, User user) {
  30. if (null == cr || null == user) {
  31. return null;
  32. }
  33. String result = null;
  34. //获取到还没有被修改过的用户信息
  35. User user2 = getUsers(cr, String.valueOf(user.id));
  36. ContentValues values = new ContentValues();
  37.  
  38. values.put(UserTable.Activity, user.activity);
  39. values.put(UserTable.Address, user.address);
  40. values.put(UserTable.CardNo, user.cardNo);
  41. values.put(UserTable.CardTypeDis, user.cardTypeDis);
  42. values.put(UserTable.CreateDate, user.createDate);
  43. values.put(UserTable.DefaultPatientID, user.defaultPatientID);
  44. values.put(UserTable.DueDate, user.dueDate);
  45. values.put(UserTable.HospitalCode, user.hospitalCode);
  46. values.put(UserTable.HospitalHost, user.hospitalHost);
  47. values.put(UserTable.HospitalID, user.hospitalID);
  48. values.put(UserTable.HospitalName, user.hospitalName);
  49. values.put(UserTable.Id, user.id);
  50. values.put(UserTable.IdNo, user.idNo);
  51. values.put(UserTable.LastModify, user.lastModify);
  52. values.put(UserTable.LastPregnancyID, user.lastPregnancyID);
  53. values.put(UserTable.MedicalNo, user.medicalNo);
  54. values.put(UserTable.Mobile, user.mobile);
  55. values.put(UserTable.Name, user.name);
  56. values.put(UserTable.Nick, user.nick);
  57. values.put(UserTable.PatientID, user.patientID);
  58. values.put(UserTable.YxtMemberID, user.yxtMemberID);
  59. values.put(UserTable.YxtUserID, user.yxtUserID);
  60.  
  61. if (values.size() > 0) {
  62. String whereStr = UserTable.Id + " = " + user.id;
  63. // 查询是否有相同数据
  64. Cursor cursor = cr.query(UserTable.CONTENT_URI, null, whereStr,
  65. null, null);
  66. if ((null != cursor) && (0 < cursor.getCount())) {
  67. cr.update(UserTable.CONTENT_URI, values, whereStr, null);
  68. } else {
  69. cr.insert(UserTable.CONTENT_URI, values);
  70. }
  71. if (cursor != null) {
  72. cursor.close();
  73. }
  74. }
  75.  
  76. if (isUpdate(user, user2))
  77. result = "信息保存成功!";
  78.  
  79. return result;
  80. }
  81. /**
  82. * 判断用户信息是否被修改
  83. * @param user1
  84. * @param user2
  85. * @return
  86. */
  87. public static boolean isUpdate(User user1, User user2) {
  88. boolean b = true;
  89. if (user1 == null || user2 == null) {
  90. return b;
  91. }
  92. if (user1.id == user2.id && user1.nick.equals(user2.nick)
  93. && user1.dueDate.equals(user2.dueDate)) {
  94. b = false;
  95. }
  96. return b;
  97. }
  98.  
  99. public static User getUsers(ContentResolver cr, String id) {
  100. User friend = null;
  101. if (null != cr) {
  102. Cursor cursor = cr.query(UserTable.CONTENT_URI, null, UserTable.Id
  103. + "=?", new String[] { id }, null);
  104. if (cursor.moveToFirst()) {
  105. friend = new User();
  106.  
  107. friend._id = cursor
  108. .getInt(cursor.getColumnIndex(UserTable._ID));
  109. friend.activity = cursor.getInt(cursor
  110. .getColumnIndex(UserTable.Activity));
  111. friend.address = cursor.getString(cursor
  112. .getColumnIndex(UserTable.Address));
  113. friend.cardNo = cursor.getString(cursor
  114. .getColumnIndex(UserTable.CardNo));
  115. friend.cardTypeDis = cursor.getString(cursor
  116. .getColumnIndex(UserTable.CardTypeDis));
  117. friend.createDate = cursor.getString(cursor
  118. .getColumnIndex(UserTable.CreateDate));
  119. friend.defaultPatientID = cursor.getInt(cursor
  120. .getColumnIndex(UserTable.DefaultPatientID));
  121. friend.dueDate = cursor.getString(cursor
  122. .getColumnIndex(UserTable.DueDate));
  123. friend.hospitalCode = cursor.getString(cursor
  124. .getColumnIndex(UserTable.HospitalCode));
  125. friend.hospitalHost = cursor.getString(cursor
  126. .getColumnIndex(UserTable.HospitalHost));
  127. friend.hospitalID = cursor.getInt(cursor
  128. .getColumnIndex(UserTable.HospitalID));
  129. friend.hospitalName = cursor.getString(cursor
  130. .getColumnIndex(UserTable.HospitalName));
  131. friend.id = cursor.getInt(cursor.getColumnIndex(UserTable.Id));
  132. friend.idNo = cursor.getString(cursor
  133. .getColumnIndex(UserTable.IdNo));
  134. friend.lastModify = cursor.getString(cursor
  135. .getColumnIndex(UserTable.LastModify));
  136. friend.lastPregnancyID = cursor.getInt(cursor
  137. .getColumnIndex(UserTable.LastPregnancyID));
  138. friend.medicalNo = cursor.getString(cursor
  139. .getColumnIndex(UserTable.MedicalNo));
  140. friend.mobile = cursor.getString(cursor
  141. .getColumnIndex(UserTable.Mobile));
  142. friend.name = cursor.getString(cursor
  143. .getColumnIndex(UserTable.Name));
  144. friend.nick = cursor.getString(cursor
  145. .getColumnIndex(UserTable.Nick));
  146. friend.patientID = cursor.getInt(cursor
  147. .getColumnIndex(UserTable.PatientID));
  148. friend.yxtMemberID = cursor.getInt(cursor
  149. .getColumnIndex(UserTable.YxtMemberID));
  150. friend.yxtUserID = cursor.getInt(cursor
  151. .getColumnIndex(UserTable.YxtUserID));
  152.  
  153. cursor.moveToNext();
  154. cursor.close();
  155. }
  156.  
  157. }
  158. return friend;
  159. }
  160.  
  161. public static ArrayList<User> getAllUsers(ContentResolver cr) {
  162. ArrayList<User> users = new ArrayList<User>();
  163. if (null != cr) {
  164. Cursor cursor = cr.query(UserTable.CONTENT_URI, null, null, null,
  165. null);
  166. if (null != cursor) {
  167. int friendsCount = cursor.getCount();
  168.  
  169. cursor.moveToFirst();
  170. for (int k = 0; k < friendsCount; k++) {
  171. User friend = new User();
  172.  
  173. friend._id = cursor.getInt(cursor
  174. .getColumnIndex(UserTable._ID));
  175. friend.activity = cursor.getInt(cursor
  176. .getColumnIndex(UserTable.Activity));
  177. friend.address = cursor.getString(cursor
  178. .getColumnIndex(UserTable.Address));
  179. friend.cardNo = cursor.getString(cursor
  180. .getColumnIndex(UserTable.CardNo));
  181. friend.cardTypeDis = cursor.getString(cursor
  182. .getColumnIndex(UserTable.CardTypeDis));
  183. friend.createDate = cursor.getString(cursor
  184. .getColumnIndex(UserTable.CreateDate));
  185. friend.defaultPatientID = cursor.getInt(cursor
  186. .getColumnIndex(UserTable.DefaultPatientID));
  187. friend.dueDate = cursor.getString(cursor
  188. .getColumnIndex(UserTable.DueDate));
  189. friend.hospitalCode = cursor.getString(cursor
  190. .getColumnIndex(UserTable.HospitalCode));
  191. friend.hospitalHost = cursor.getString(cursor
  192. .getColumnIndex(UserTable.HospitalHost));
  193. friend.hospitalID = cursor.getInt(cursor
  194. .getColumnIndex(UserTable.HospitalID));
  195. friend.hospitalName = cursor.getString(cursor
  196. .getColumnIndex(UserTable.HospitalName));
  197. friend.id = cursor.getInt(cursor
  198. .getColumnIndex(UserTable.Id));
  199. friend.idNo = cursor.getString(cursor
  200. .getColumnIndex(UserTable.IdNo));
  201. friend.lastModify = cursor.getString(cursor
  202. .getColumnIndex(UserTable.LastModify));
  203. friend.lastPregnancyID = cursor.getInt(cursor
  204. .getColumnIndex(UserTable.LastPregnancyID));
  205. friend.medicalNo = cursor.getString(cursor
  206. .getColumnIndex(UserTable.MedicalNo));
  207. friend.mobile = cursor.getString(cursor
  208. .getColumnIndex(UserTable.Mobile));
  209. friend.name = cursor.getString(cursor
  210. .getColumnIndex(UserTable.Name));
  211. friend.nick = cursor.getString(cursor
  212. .getColumnIndex(UserTable.Nick));
  213. friend.patientID = cursor.getInt(cursor
  214. .getColumnIndex(UserTable.PatientID));
  215. friend.yxtMemberID = cursor.getInt(cursor
  216. .getColumnIndex(UserTable.YxtMemberID));
  217. friend.yxtUserID = cursor.getInt(cursor
  218. .getColumnIndex(UserTable.YxtUserID));
  219.  
  220. users.add(friend);
  221.  
  222. cursor.moveToNext();
  223. }
  224. cursor.close();
  225. }
  226.  
  227. }
  228. return users;
  229. }
  230.  
  231. public static class UserTable implements BaseColumns {
  232. public static final String TABLE_NAME = "user";
  233.  
  234. public static final Uri CONTENT_URI = Uri.parse("content://"
  235. + Constants.AUTHORITY + "/" + TABLE_NAME);
  236.  
  237. public static final String CONTENT_TYPE = "vnd.android.cursor.dir/"
  238. + Constants.AUTHORITY + "/" + TABLE_NAME;
  239.  
  240. public static final String _ID = "_id";
  241. public static final String HospitalHost = "hospitalHost";
  242. public static final String HospitalName = "hospitalName";
  243. public static final String LastModify = "lastModify";
  244. public static final String IdNo = "idNo";
  245. public static final String Mobile = "mobile";
  246. public static final String Name = "name";
  247. public static final String HospitalCode = "hospitalCode";
  248. public static final String DueDate = "dueDate";
  249. public static final String Activity = "activity";
  250. public static final String YxtUserID = "yxtUserID";
  251. public static final String Nick = "nick";
  252. public static final String CardTypeDis = "cardTypeDis";
  253. public static final String HospitalID = "hospitalID";
  254. public static final String Id = "id";
  255. public static final String YxtMemberID = "yxtMemberID";
  256. public static final String DefaultPatientID = "defaultPatientID";
  257. public static final String Address = "address";
  258. public static final String LastPregnancyID = "lastPregnancyID";
  259. public static final String CreateDate = "createDate";
  260. public static final String CardNo = "cardNo";
  261. public static final String MedicalNo = "medicalNo";
  262. public static final String PatientID = "patientID";
  263.  
  264. public static final String TABLE_CREATESQL = "CREATE TABLE "
  265. + TABLE_NAME + " (" + "_id"
  266. + " INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT," + HospitalHost
  267. + " TEXT," + HospitalName + " TEXT," + LastModify + " TEXT,"
  268. + IdNo + " TEXT," + Mobile + " TEXT," + Name + " TEXT,"
  269. + HospitalCode + " TEXT," + DueDate + " TEXT," + Activity
  270. + " TEXT," + YxtUserID + " TEXT," + Nick + " TEXT,"
  271. + CardTypeDis + " TEXT," + HospitalID + " TEXT," + Id
  272. + " TEXT," + YxtMemberID + " TEXT," + DefaultPatientID
  273. + " TEXT," + Address + " TEXT," + LastPregnancyID + " TEXT,"
  274. + CreateDate + " TEXT," + CardNo + " TEXT," + MedicalNo
  275. + " TEXT," + PatientID + " INTEGER" + ");";
  276.  
  277. }
  278.  
  279. }

ContentProvider实现流程的更多相关文章

  1. Android ContentProvider 启动分析

    对于 ContentProvider 还不是很熟悉的同学,可以阅读上一篇 Android ContentProvider 基本原理和使用详解.本文主要是对 contentProvider 的源码进行分 ...

  2. Android艺术开发探索——第二章:IPC机制(下)

    Android艺术开发探索--第二章:IPC机制(下) 我们继续来讲IPC机制,在本篇中你将会学习到 ContentProvider Socket Binder连接池 一.使用ContentProvi ...

  3. Android全面解析之Context机制

    前言 很高兴遇见你~ 欢迎阅读我的文章. 在文章Android全面解析之由浅及深Handler消息机制中讨论到,Handler可以: 避免我们自己去手动写 死循环和输入阻塞 来不断获取用户的输入以及避 ...

  4. Contentprovider 注册 启动简单流程

    安装app时packagemanager 读取manixfest获取provider信息 存在数据库里流程:1.加载ActivityThread main方法,创建消息队列.ActivityThrea ...

  5. Contentprovider的创建和使用流程概述

    首先在provider类中继承并实现provider的几个必要方法 -- boolean onCreate(),用来执行一些初始化的工作. -- cursor query(Uri, String[], ...

  6. FrameWork启动流程

    Android启动过程包含从Linux内核加载到Home应用程序启动的整个过程.整体流程如下: Android是基于Linux内核的系统平台.启动时,首先通过bootloader(系统加载器),加载L ...

  7. android Camera 数据流程分析

    这篇文章主要针对其数据流程进行分析.Camera一般用于图像浏览.拍照和视频录制.这里先对图像浏览和拍照的数据流进行分析,后面再对视频电话部分进行分析. 1.针对HAL层对摄像头数据处理补充一下 Li ...

  8. ContentProvider初阶Cookbook

    在Android世界里,ContentProvider将数据存储抽象成了类似SQL的形式,通过insert, delete, update, query等接口实现对数据的增删改查.通过ContentP ...

  9. Android 7.0 中 ContentProvider 实现原理

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:汪毅雄 导语: 本文描述了ContentProvider发布者和调用者这两在Framework层是如何实现的. 作为Android的四大 ...

随机推荐

  1. LINQ to SQL语句(1)之Where

    适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句.Where操作包括3种形式,分别为简单形式.关系条件形式. ...

  2. jQuery Pagination分页插件的使用

    一.引用CSS和JS: <link href="/Content/Plugins/jQuery.Pagination_v2.2/pagination.css" rel=&qu ...

  3. Web API应用架构设计分析(1)

    Web API 是一种应用接口框架,它能够构建HTTP服务以支撑更广泛的客户端(包括浏览器,手机和平板电脑等移动设备)的框架, ASP.NET Web API 是一种用于在 .NET Framewor ...

  4. [水煮 ReSharper] 高效开发—十个实用的快捷键

    所有 ReSherper 的功能都可以使用快捷键.大部分功能都有默认快捷键,剩下的少数功能可以自定义快捷键. ReSharper 提供了两种快捷键的方式 Visual Studio:这种方式可以减少与 ...

  5. C# AD(Active Directory)域信息同步,组织单位、用户等信息查询

    示例准备 打开上一篇文章配置好的AD域控制器 开始菜单-->管理工具-->Active Directory 用户和计算机 新建组织单位和用户   新建层次关系如下: 知识了解 我们要用C# ...

  6. What Can Java Technology Do?

    What Can Java Technology Do? The general-purpose(多用途的), high-level Java programming language is a po ...

  7. 使用Aspose插件对Excel操作

    使用使用Aspose插件对Excel文档进行导入导出操作 使用前请先下载Aspose插件引用 Excel导入: 前台使用file标签获取,submit方式提交. <form id="f ...

  8. 设置MySQL服务自动运行

    一般情况下,MySQL安装以后是自动运行的,不知道我这台机器是什么原因,MySQL不能自动运行,每次开机后都要手动运行mysqld.exe,比较麻烦,于是用以下方法将MySQL自动启动: 1. 运行c ...

  9. XE8 FMX SpeedButton 大图标(改 Style)

    自从 XE8 提供 ImageList 带来了很多便利,但 SpeedButton 的图标太小(不够大气),还好 FMX 提供了 Style 可供使用者自订图标大小及显示位置,请自行按图索骥,做一遍: ...

  10. Scalaz(19)- Monad: \/ - Monad 版本的 Either

    scala标准库提供了一个Either类型,它可以说是Option的升级版.与Option相同,Either也有两种状态:Left和Right,分别对应Option的None和Some,不同的是Lef ...