进入实战,开发酷欧天气(二)

来源:互联网 发布:百度高级优化师 编辑:程序博客网 时间:2024/05/21 05:58

比别人多一点志气,你就会多一份出息。


本讲内容:创建数据库和表


一、项目结构如图:



1、建立三张表,Province、City、County,分别存放省、市、县的各种数据信息。

在db包下新建一个CoolWeatherOpenHelper类,代码如下:

public class CoolWeatherOpenHelper 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 CoolWeatherOpenHelper(Context context, String name, CursorFactory factory,int version) {super(context, name, factory, version);}public void onCreate(SQLiteDatabase db) {db.execSQL(CREATE_PROVINCE);  // 创建Province表db.execSQL(CREATE_CITY);  // 创建City表db.execSQL(CREATE_COUNTY);  // 创建County表}public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}}
另外,每张表在代码中最好能有一个对应的实体类,方便后续的开发工作。分别在model包下建立三个类。

Province类

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;}}

City类

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;}}

County类

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;}}

接着还需要创建一个CoolWeatherDB类,这个类把一些常用的数据库操作封装起来,以方便我们后面使用,代码如下:

public class CoolWeatherDB {/** * 数据库名 */public static final String DB_NAME = "cool_weather";/** * 数据库版本 */public static final int VERSION = 1;private static CoolWeatherDB coolWeatherDB;private SQLiteDatabase db;/** * 将构造方法私有化 */private CoolWeatherDB(Context context) {CoolWeatherOpenHelper dbHelper = new CoolWeatherOpenHelper(context, DB_NAME, null, VERSION);db = dbHelper.getWritableDatabase();}/** * 获取CoolWeatherDB的实例。 */public synchronized static CoolWeatherDB getInstance(Context context) {if (coolWeatherDB == null) {coolWeatherDB = new CoolWeatherDB(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;}}

第一阶段的代码就写到这里了,现在提交一下,首先将所有新增的文件夹添加到版本控制中:git add .

然后把MainActivity.java和activity_main.xml这两个文件从版本控制中删除掉:

git rm src/com/coolweather/app/MainActivity.java

git rm res/layout/activity_main.xml

接着执行提交操作:

git commit -m "新增数据库帮助类,以及各表对应的实体类。"

最后将提交同步到GitHub上面:git push origin master




1 0
原创粉丝点击