基于android平台的3g手机气象软件毕业设计论文(编辑修改稿)内容摘要:
red, 完全对应数据库中 weather_widget 的表。 (2) 的部分代码: public class ForecastEntity { private Integer id。 //编号 private String dayOfWeek。 //星期 private Integer low。 //最低温度 private Integer hight。 //最高温度 private String icon。 //天气图标 第五章 程序开发 专业团队承接 android 毕业设计 Android 毕业设计代做 : 924097675 private String condition。 //天气情况 private Integer widgetId。 //组件 id 从代码中可以看出, WidgetEntity 类中 有以上公有静态属性 id、dayOfWeek、 low、 hight、 icon、 condition、 widgetId, 完全对应数据库中 weather_forcast 的表。 在创建 ForecastProvider 时,首先需要使用数据库、文件系统或网络实现底层存储功能,这里我们采用数据库建立了数据库设计中的两张表,从而实现了底层存储功能。 然后在继承 ContentProvider 的类中实现基本数据操作的接口函数,包括添加、删除、查找和更新等功能。 下面就核心代码进行分析。 (1) 创 建 数 据 库 : DatabaseHelper 类 继 承 SQLiteOpenHelper ,SQLiteOpenHelper 这 个 类 可 以 辅 助 建 立 、 更 新 和 打 开 数 据 库。 DatabaseHelper 在建立数据库时,同时建立了两个数据库表 weather_widget和 weather_forcast,并对保存配置信息的表进行了初始化。 具体代码如下所示: private static class DatabaseHelper extends SQLiteOpenHelper { //数据库名称 private static final String DATABASE_NAME =。 //数据库版本 private static final int DATABASE_VERSION = 2。 //构造方法,重载父类构造 public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION)。 } public void onCreate(SQLiteDatabase db) { //创建 weather_widget表 public void onCreate(SQLiteDatabase db) { //创建 weather_widget表 (CREATE TABLE + TABLE_WIDGET + ( ......)。 //创建 weather_forecast表 (CREATE TABLE + TABLE_FORECAST + ( ......)。 } } //重写 onUpgrade()方法 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { ...... } 第五章 程序开发 专业团队承接 android 毕业设计 Android 毕业设计代做 : 924097675 } } (2) URI 设置: ContentProvider 可以提供多个数据集,调用者使用 URI(通用资源标识符)对不同的数据集的数据进 行操作。 URI 用来地位任何远程或本地的 可 用 资 源。 ContentProvider 使用的 URI 语 法 结 构URI 进行设置。 代码如下: public static class WeatherWidgets implements BaseColumns { //继承 BaseColumns可以提供自动生成的 ID //声明 CONTENT_URI public static final Uri CONTENT_URI = ( + AUTHORITY + /widgets)。 public static final String FORECAST_END = forecasts。 //指操作多条数据 public static final String CONTENT_TYPE =。 //指操作单条数据 public static final String CONTENT_ITEM_TYPE =。 } (3) 查询功能:首先我们先了解一下 SQLiteQueryBuilder 的 query()方法。 query ( SQLiteDatabase db, String[] projectionIn, String selection, String[] selectionArgs, String groupBy, String having, String sortOrder, String limit) ,参数说明如表 : 参 数 说 明 SQLiteDatabase db 要查询的数据库实例 String[] projectionIn 是一个字符串数组,里边的每一项代表了需要返回的列名 String selection 相当于 SQL 语句中的 where 部分 String[] selectionArgs 是一个字符串数组,里边的每一项依次替代在第三个参数中出现的问号( ?) String groupBy 相当于 SQL 语句当中的 groupby 部分 String having 相当于 SQL 语句当中的 having 部分 String sortOrder 描述是怎么进行排序 String limit 相当于 SQL 当中的 limit 部分,控制返回的数据的个数 查询功能的核心代码如下: public Cursor query(Uri uri, String[] projection, String selection, 第五章 程序开发 专业团队承接 android 毕业设计 Android 毕业设计代做 : 924097675 String[] selectionArgs, String sortOrder) { //getReadableDatabase()这个函数会数据库是否存在、版本号和是否可读等情况, //决 定在返回数据库对象前,是否需要数据库。 返回一个可读的数据库对象。 SQLiteDatabase db = ()。 //声明了一个 SQLiteQueryBuilder对象,该对象利用传入的参数生成一个完整的 //sqlite查询语句,还可以完成查询工作并返回结果集( Cursor)。 SQLiteQueryBuilder qb = new SQLiteQueryBuilder()。 String limit = null。 //通过 一个 switch语句,完成了通过 uri种类的辨别来生成不通的SQLiteQueryBuilder对象的工作。 switch ((uri)) { case WIDGETS: { (TABLE_WIDGET)。 break。 } case WIDGETS_ID: { String appWidgetId = ().get(1)。 (TABLE_WIDGET)。 ( + = + appWidgetId)。 break。 } case WIDGETS_FORECASTS: { // Pick all the forecasts for given widget, sorted by date and // importance //获得 appWidgetId String appWidgetId = ().get(1)。 //为该 SQLiteQueryBuilder对象设置它查询工作将针对的表 (TABLE_FORECAST)。 //qb的 where条件 ( + = + appWidgetId)。 //按照 sortOrder = + ASC。 break。 }case FORECASTS: { (TABLE_FORECAST)。 break。 } case FORECASTS_ID: { String forecastId = ().get(1)。 (TABLE_FORECAST)。 ( + = + forecastId)。 break。 第五章 程序开发 专业团队承接 android 毕业设计 Android 毕业设计代做 : 924097675 } } return (db, projection, selection, selectionArgs, null, null,sortOrder, limit)。 } (4) 添加、 删除、更新功能 由于核心代码类似,此处不一一赘述。 添加功能: public Uri insert(Uri uri, ContentValues values) {} 删除功能: public int delete(Uri uri, String selection, String[] selectionArgs) {} 更新功能: public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {} (5) 类型匹配:增删改查通过 switch 判断,进行不同的操作,因而还需 要对关键字进行类型匹配。 核心代码如下: /*getType()函数用来返回指定 URI的 MIME数据类型 * CONTENT_TYPE表示 URI是多条数据 * CONTENT_ITEM_TYPE表示是单条数据 */ @Override public String getType(Uri uri) { // TODO Autogenerated method stub switch ((uri)) { case WIDGETS: return。 case WIDGETS_ID: return。 case WIDGETS_FORECASTS: return。 case FORECASTS: return。 case FORECASTS_ID: return。 } throw new IllegalStateException()。 } //构造无匹配方式的 uriMatcher private static final UriMatcher uriMatcher = new UriMatcher( )。 private static final int WIDGETS = 101。 private static final int WIDGETS_ID = 102。 第五章 程序开发 专业团队承接 android 毕业设计 Android 毕业设计代做 : 924097675 private static final int WIDGETS_FORECASTS = 103。 private static final int FORECASTS = 201。 private static final int FORECASTS_ID = 202。 //声明了 uriMatcher的匹配方式和返回代码 static { (AUTHORITY, widgets, WIDGETS)。 (AUTHORITY, widget。基于android平台的3g手机气象软件毕业设计论文(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。