天气APP实战二 ( 创建表和包的结构)

来源:互联网 发布:倚天分析软件 编辑:程序博客网 时间:2024/06/05 05:44

上一篇地址

天气APP的实战(1)

创建表和包的结构

 

1.activity放所有与活动相关的包,以为自己忘记在配置文件注册

2.Db 放于数据库相关的代码  建立数据库 数据持久化操作

3.Model 其实就是实体类 

4.Receive 存放所有广播接收器相关的代码

5.Service  存放所有与服务相关的代码

6.Utils  大家都估计是最熟悉的包 放工具类的地方

 

首先 我们要获取省市县的数据 用数据库进行存储 所以先建数据库 其实 我对于数据库的语言,没有校对工具是很容易错的,所以呢,大家最好现在用SQLiteExpertPers工具去调试下再去COPY到代码中.


WeatherOpenHelper

package com.xiaoxin.Weather.db;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;public class WeatherOpenHelper extends SQLiteOpenHelper {/** *  Province表建表语句 */public static final String CREATE_PROVINCE = "create table Province ("+ "id integer primary key autoincrement, " + "province_name text, "+ "province_code text)";/** *  City表建表语句 */public static final String CREATE_CITY = "create table City ("+ "id integer primary key autoincrement, " + "city_name text, " + "city_code text, " + "province_id integer)";/** *  County表建表语句 */public static final String CREATE_COUNTY = "create table County ("+ "id integer primary key autoincrement, " + "county_name text, " + "county_code text, " + "city_id integer)";public WeatherOpenHelper(Context context, String name, CursorFactory factory,int version) {super(context, name, factory, version);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL(CREATE_PROVINCE);  // 创建Province表db.execSQL(CREATE_CITY);  // 创建City表db.execSQL(CREATE_COUNTY);  // 创建County表}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}}

就是三个建表的语句 最后在oncreate中执行 很简单的

另外每一张表最好有一个实体类,以便于后期开发

城市类

package com.xiaoxin.Weather.model;public class City {private int id;private String cityName;private String cityCode;private int provinceId;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getCityName() {return cityName;}public void setCityName(String cityName) {this.cityName = cityName;}public String getCityCode() {return cityCode;}public void setCityCode(String cityCode) {this.cityCode = cityCode;}public int getProvinceId() {return provinceId;}public void setProvinceId(int provinceId) {this.provinceId = provinceId;}}

package com.xiaoxin.Weather.model;public class County {private int id;private String countyName;private String countyCode;private int cityId;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getCountyName() {return countyName;}public void setCountyName(String countyName) {this.countyName = countyName;}public String getCountyCode() {return countyCode;}public void setCountyCode(String countyCode) {this.countyCode = countyCode;}public int getCityId() {return cityId;}public void setCityId(int cityId) {this.cityId = cityId;}}

package com.xiaoxin.Weather.model;public class Province {private int id;private String provinceName;private String provinceCode;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getProvinceName() {return provinceName;}public void setProvinceName(String provinceName) {this.provinceName = provinceName;}public String getProvinceCode() {return provinceCode;}public void setProvinceCode(String provinceCode) {this.provinceCode = provinceCode;}}

可以看出来,实体类的内容都非常简单,基本就是生成数据库表对应字段的get和set方法,接着还需要创建一个coolWeatherDB类 这个类中会把一些常用的数据库操作进行封装,以便于后期使用。

package com.xiaoxin.Weather.db;import java.util.ArrayList;import java.util.List;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import com.xiaoxin.Weather.model.City;import com.xiaoxin.Weather.model.County;import com.xiaoxin.Weather.model.Province;public class WeatherDB {/** * 数据库名 */public static final String DB_NAME = "weather";/** * 数据库版本 */public static final int VERSION = 1;private static WeatherDB coolWeatherDB;private SQLiteDatabase db;/** * 将构造方法私有化 */private WeatherDB(Context context) {WeatherOpenHelper dbHelper = new WeatherOpenHelper(context,DB_NAME, null, VERSION);db = dbHelper.getWritableDatabase();}/** * 获取CoolWeatherDB的实例。 */public synchronized static WeatherDB getInstance(Context context) {if (coolWeatherDB == null) {coolWeatherDB = new WeatherDB(context);}return coolWeatherDB;}/** * 将Province实例存储到数据库。 */public void saveProvince(Province province) {if (province != null) {ContentValues values = new ContentValues();values.put("province_name", province.getProvinceName());values.put("province_code", province.getProvinceCode());db.insert("Province", null, values);}}/** * 从数据库读取全国所有的省份信息。 */public List<Province> loadProvinces() {List<Province> list = new ArrayList<Province>();Cursor cursor = db.query("Province", null, null, null, null, null, null);if (cursor.moveToFirst()) {do {Province province = new Province();province.setId(cursor.getInt(cursor.getColumnIndex("id")));province.setProvinceName(cursor.getString(cursor.getColumnIndex("province_name")));province.setProvinceCode(cursor.getString(cursor.getColumnIndex("province_code")));list.add(province);} while (cursor.moveToNext());}return list;}/** * 将City实例存储到数据库。 */public void saveCity(City city) {if (city != null) {ContentValues values = new ContentValues();values.put("city_name", city.getCityName());values.put("city_code", city.getCityCode());values.put("province_id", city.getProvinceId());db.insert("City", null, values);}}/** * 从数据库读取某省下所有的城市信息。 */public List<City> loadCities(int provinceId) {List<City> list = new ArrayList<City>();Cursor cursor = db.query("City", null, "province_id = ?",new String[] { String.valueOf(provinceId) }, null, null, null);if (cursor.moveToFirst()) {do {City city = new City();city.setId(cursor.getInt(cursor.getColumnIndex("id")));city.setCityName(cursor.getString(cursor.getColumnIndex("city_name")));city.setCityCode(cursor.getString(cursor.getColumnIndex("city_code")));city.setProvinceId(provinceId);list.add(city);} while (cursor.moveToNext());}return list;}/** * 将County实例存储到数据库。 */public void saveCounty(County county) {if (county != null) {ContentValues values = new ContentValues();values.put("county_name", county.getCountyName());values.put("county_code", county.getCountyCode());values.put("city_id", county.getCityId());db.insert("County", null, values);}}/** * 从数据库读取某城市下所有的县信息。 */public List<County> loadCounties(int cityId) {List<County> list = new ArrayList<County>();Cursor cursor = db.query("County", null, "city_id = ?",new String[] { String.valueOf(cityId) }, null, null, null);if (cursor.moveToFirst()) {do {County county = new County();county.setId(cursor.getInt(cursor.getColumnIndex("id")));county.setCountyName(cursor.getString(cursor.getColumnIndex("county_name")));county.setCountyCode(cursor.getString(cursor.getColumnIndex("county_code")));county.setCityId(cityId);list.add(county);} while (cursor.moveToNext());}return list;}}

weatherDB 我决定还是下一节 仔细的讲解一下 毕竟 郭大婶 封装的很好

0 0
原创粉丝点击