Android中应用contentprovider来创建数据库的一些步骤
http://blog.csdn.net/xiaodongvtion/article/details/7865669
1:首先创建一个xxprovider的class,它是extendscontentprovider的。
2:在这个xxprovider中首选定义要创建的数据库的databasename,以及databaseversion
3:非常重要的是:建立database的authority。值得注意的是这个authority必须和配置文件中的authority必须是一致的
4:创建这个数据库的要创建的数据表的名字tablename
5:创建外部通过访问数据表的Uri。(public static final Uri PENDINGLIST_CONTENT_URI = Uri.parse("content://"
+ BrowserProvider.AUTHORITY + "/"
+BrowserProvider.PENDINGLIST_TABLE_NAME);)值得注意的是这里必须是Uri而不是url。这个Uri是由三部分来组成。Content://和authority以及数据表。
6:定义需要创建数据表的一些属性列。然后可以用一个数组将这些属性列来封装起来
7:定义一个UriMacther,它的作用是当有多个数据表的时候,用来匹配当前操作的是哪个数据表的Uri
private static final UriMatcher sUriMatcher;
static {
sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
sUriMatcher.addURI(AUTHORITY, BOOKMARK_TABLE_NAME, BOOKMARK_URI);
sUriMatcher.addURI(AUTHORITY, PENDINGLIST_TABLE_NAME, PENDINGLIST_URI);
sUriMatcher.addURI(AUTHORITY, FOLDER_TABLE_NAME, FOLDER_URI);
}
8:在这个xxprovider中需要定义一个内部类
Databasehleper它是继承了SQLiteOpenHelper,这个内部类有一个构造函数,已经重写了两个方法。
DatabaseHelper(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(“创建数据表的语句”
);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLEIF EXISTS " + FOLDER_TABLE_NAME);
onCreate(db);
}
9:定义databasehleper这个类的一个对象,用于xxprovider来操作
10:重写xxprovider的几个方法
Delete insert oncreate query以及update等方法
Android中应用contentprovider来创建数据库的一些步骤的更多相关文章
- Android中多表的SQLite数据库(译)
原文: Android SQLite Database with Multiple Tables 在上一篇教程Android SQLite Database Tutorial中,解释了如何在你的And ...
- Android中使用ContentProvider进行跨进程方法调用
原文同一时候发表在我的博客 点我进入还能看到很多其它 需求背景 近期接到这样一个需求,须要和别的 App 进行联动交互,比方下载器 App 和桌面 App 进行联动.桌面的 App 能直接显示下载器 ...
- Android中的GreenDao框架修改数据库的存储路径
目前android中比较热门的数据库框架有greenDAO.OrmLite.AndrORM,其中我比较喜欢用GreenDao,其运行效率最高,内存消耗最少,性能最佳.具体怎么使用GreenDao,网上 ...
- Android中使用LitePal操控SQLite数据库
<第一行代码>读书手札 (一)什么是LitePal数据库 LitePal数据库是安卓的一个开源库,我们在以后的开发中,将会遇到许许多多的开源库,感谢开源社 区:因为开源社区的存在,一些我们 ...
- android中的ContentProvider实现数据共享
为了在应用程序之间交换数据,android中提供了ContentProvider,ContentProvider是不同应用程序之间进行数据交换的标准API.当一个应用程序需要把自己的数据暴露给其他程序 ...
- 在Android中查看和管理sqlite数据库
在Android中可以使用Eclipse插件DDMS来查看,也可以使用Android工具包中的adb工具来查看.android项目中的sqlite数据库位于/data/data/项目包/databas ...
- C# 读取文件中的sql语句 创建数据库以及表结构
大概思路是: 读取文件 根据文件中行内容为GO 作为分割 一条条放到list中 然后在程序中逐条执行sql语句; 值得一提的是 创建数据库的语句是不允许放到程序事务中执行的 所以目前我是分了两个文本 ...
- mysql数据库中,通过mysqladmin工具,创建数据库
需求描述: 今天接触到了mysqladmin工具,主要是一个客户端工具,用来管理mysql server的 可以通过mysqladmin直接创建数据库,而不需要登录到mysql控制台中,在此记录下. ...
- Android中在sdcard上创建文件夹
//在SD卡上创建一个文件夹 public void createSDCardDir(){ if(Environment.MEDIA_MOUNTED.equals(Environment ...
随机推荐
- DevExpress06、Popup Menus、RadialMenu、XtraTabControl、SplitContainerControl、GroupControl
Popup Menus 弹出菜单 使用弹出菜单(popup menus),我们可以在 控件上 显示 上下文选项 或 命令. 弹出菜单是一个显示了特定项的窗体,用户可以选择这些项以执行 ...
- 展示博客(Alpha版本)
小队名称:PHILOSOPHER 小组成员 [组长]金盛昌(201421122043).刘文钊(20142112255).陈笑林(201421122042) 张俊逸(201421122044).陈志建 ...
- 设计模式_享元设计模式(flyweight)
享元模式以共享的方式高效地支持大量的细粒度对象.很多很小的对象,这些对象有很多共同的东西,那就变成一个对象,还有些不同的东西,作为外部的属性,用方法的参数传入 public class Flyweig ...
- BZOJ1121:[POI2008]激光发射器SZK(乱搞)
Description 多边形相邻边垂直,边长为整数,边平行坐标轴.要在多边形的点上放一些激光发射器和接收器.满足下列要求: 1发射器和接收器不能放置在同一点: 2发射器发出激光可以沿壁反射,最终到达 ...
- Arthas开源项目
本文主要围绕着Arthas是什么.能做什么.安装和使用等三个方面内容来讲解,希望对初学者和对此有兴趣的朋友有帮助. 一. Arthas是什么 文档地址: https://alibaba.github. ...
- Drools实战系列(三)之eclipse创建工程
web工程和maven工程是目前比较常用的,当然对现在而言,maven工程是开发中最常用的. 两种Drools项目的创建方式,一种是直接创建Drools项目,另一种是基于Maven创建Drools项目 ...
- [转]Custom Controls in Visual C# .NET-如何实现自定义控件
A very simple introduction to writing your first .NET control Download source files - 1 Kb Introduct ...
- Android 在ScrollView中嵌入ViewPage后ViewPage不能很好的工作的问题解决
解决办法:重写ScrollView,如下代码所示: public class MyScrollView extends ScrollView{ private GestureDetector mGes ...
- HDU 3861 The King’s Problem(tarjan缩点+最小路径覆盖:sig-最大二分匹配数,经典题)
The King’s Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- 微信小程序开发 [07] 写在后面的话
写在后面的话基本算是吐槽了,在学完小程序的课程之后,我用博客园的api,写了个闪存的小程序,本来兴致勃勃甚至这篇是准备写"我的第一个小程序发布啦",然而并没有. 不是说我偷懒了没写 ...