xutils数据库+gson解析假接口使用

xutils手动添加数据到本地数据库

JSON解析接口假数据自动添加到本地数据库,不需要手动添加数据

选择使用xutils框架的数据库模块创建android本地数据库,建立两张表Person和City,Person表中的数据是用for循环插入的,City表中的数据是解析本地json串添加进去的。


解析包是解析包,利用在线beJson自动生成实体类(12.28更 用studio里的GsonFormat生成,对于要将复杂的json串里的部分数据保存到数据库,则需要将那部分的实体类<即数据结构的实体类,既可以作为实体类又可以作为表结构类>建在外面,不要在整个大的gonnformat生成的类中,这样后续操作不方便),CityData同时也是表,承接接口解析的假数据利用数据库的保存方法存储到本地数据库

数据包是表(表)+操作表的工具类,应该有一个统一的操作类,或者在相应的活动中进行数据的增删改查

CityData

包com.example.zza_android_test2.parse;

进口org.xutils.db.annotation.Column;
进口org.xutils.db.annotation.Table;

/ **
 *既是实体类同时也创建了表,多了一个字段ID(主键自增长)
 * 
 * @author huangjh
 *
 * /
@Table(NAME =“CityData”)
公共类CityData {
	@Column(NAME =“ID”,ISID = TRUE)
	私人诠释身份证;
	@Column(NAME =“省”)
	私人字符串省;
	@Column(NAME =“城市”)
	私人字符串的城市;
	@Column(NAME =“国”)
	私人字符串的国家;
	@Column(名称=“规范”)
	私人诠释代码;

	公共无效setProvince(字符串省){
		this.province =省份;
	}

	公共字符串getProvince(){
		返回this.province;
	}

	公共无效setCity(字符串市){
		this.city =城市;
	}

	公共字符串getCity(){
		返回this.city;
	}

	公共无效setCountry(字符串国家){
		this.country =国家;
	}

	公共字符串getCountry(){
		返回this.country;
	}

	公共无效setCode(INT代码){
		this.code =代码;
	}

	公众诠释引用代码(){
		返回this.code;
	}
}

DatabaseOpenHelper

包com.example.zza_android_test2.database;

进口android.annotation.SuppressLint;
进口org.xutils.DbManager;
进口org.xutils.x;

公共类DatabaseOpenHelper {
	私人DbManager.DaoConfig daoConfig;
	私有静态DbManager分贝;
	私人最终字符串DB_NAME =“mydb.db”;
	私人最终诠释VERSION = 1;

	私人DatabaseOpenHelper(){
		daoConfig =新DbManager.DaoConfig()。setDbName(DB_NAME)
				.setDbVersion(VERSION)
				.setDbOpenListener(新DbManager.DbOpenListener(){
					@SuppressLint(“NewApi”)
					@覆盖
					公共无效onDbOpened(DbManager DB){
						。db.getDatabase()enableWriteAheadLogging();
						//开启WAL,对写入加速提升巨大(作者原话)
					}
				})。setDbUpgradeListener(新DbManager.DbUpgradeListener(){
					@覆盖
					公共无效onUpgrade(DbManager分贝,诠释oldVersion,
							INT静态网页){
						//数据库升级操作
					}
				});
		DB = x.getDb(daoConfig);
	}

	公共静态DbManager的getInstance(){
		如果(DB == NULL){
			DatabaseOpenHelper databaseOpenHelper =新DatabaseOpenHelper();
		}
		返回分贝;
	}
}



SecondActivity主活动页

包com.example.zza_android_test2.activity;

进口的java.util.List;

进口android.app.Activity;
进口android.os.Bundle;
进口android.util.Log;
进口android.view.View;
进口android.view.View.OnClickListener;
进口android.widget.Button;

进口com.example.zza_android_test2.R;
进口com.example.zza_android_test2.data.City;
进口com.example.zza_android_test2.data.Dog;
进口com.example.zza_android_test2.data.Person;
进口com.example.zza_android_test2.data.operate.DbUtils;
进口com.example.zza_android_test2.parse.CityBody;
进口com.example.zza_android_test2.parse.CityData;
进口com.example.zza_android_test2.parse.CityRoot;
进口com.google.gson.Gson;

/ **
 *创建数据库
 * 
 * @author huangjh
 *
 * /
公共类SecondActivity扩展活动实现OnClickListener {

	私人按钮BTN,BTN1,BTN2,btn3,btn4;
	DbUtils dbUtils;
	私人JSON字符串=“{\”成功\“:\”真正\“,”
			+“\”身体\“:{\”数据\“:[{\”省\“:\”江苏省\“,”
			+“\”城\“:\”连云港\“,\”国家\“:”
			+“\”灌云县\“,\”代码\“:222200},{”
			+“\”省\“:\”江苏省\“,”
			+“\”城\“:\”连云港\“,\”国家\“:”
			+“\”灌南县\“,\”代码\“:222200},{\”省\“:\”江苏省\“,”
			+“\”城\“:\”连云港\“,\”国家\“:”
			+“\”新浦区\“,\”代码\“:222200},{\”省\“:\”江苏省\“,”
			+“\”城\“:\”连云港\“,\”国家\“:”
			+“\”海州区\“,\”代码\“:222200},{\”省\“:\”江苏省\“,”
			+“\”城\“:\”连云港\“,\”国家\“:”
			+“\”东海县\“,\”代码\“:222200},{\”省\“:\”江苏省\“,”
			+“\”城\“:\”南京\“,\”国家\“:”
			+“\”浦口区\“,\”代码\“:222200}]},\”错误码\“:\” -  1 \“,\”MSG \“:\”成功\“}”;

	保护无效的onCreate(捆绑savedInstanceState){
		super.onCreate(savedInstanceState);
		的setContentView(R.layout.activity_second);
		BTN =(按钮)findViewById(R.id.btn);
		BTN1 =(按钮)findViewById(R.id.btn1);
		BTN2 =(按钮)findViewById(R.id.btn2);
		btn3 =(按钮)findViewById(R.id.btn3);
		btn4 =(按钮)findViewById(R.id.btn4);
		btn.setOnClickListener(本);
		btn1.setOnClickListener(本);
		btn2.setOnClickListener(本);
		btn3.setOnClickListener(本);
		btn4.setOnClickListener(本);

		dbUtils =新DbUtils();
		dbUtils.createTable(); //统一创建表
		Log.e(“JSON”,json.toString());
	}

	@覆盖
	公共无效的onClick(视图v){
		// TODO自动生成方法存根
		开关(v.getId()){
		案例R.id.btn://添加人表数据
			的for(int i = 0; I <50;我++){
				人PERSON1 =新的Person(“小龙虾”,20日,“男”,“南京”);
				人PERSON2 =新的Person(“大虾”,40,“男”,“南京”);
				dbUtils.insert(PERSON1,1);
				dbUtils.insert(PERSON2,1);
			}
			打破;
		案例R.id.btn3://查询

			dbUtils.query(Person.class,1);
			dbUtils.query(City.class,2);
			dbUtils.query(Person.class,3);

			打破;
		案例R.id.btn4://添加
			//接口解析添加citydata表数据
			GSON GSON =新GSON();
			CityRoot根= gson.fromJson(JSON,CityRoot.class);
			CityBody体= root.getBody();
			名单<CityData>的DataList = body.getData();
			Log.e(“DataList控件”,dataList.size()+“”);
			的for(int i = 0; I <dataList.size();我++){
				CityData数据= dataList.get(我); //已经解析出了详细的数据,直接添加到数据库
				dbUtils.insert(数据,4);
			}

			//添加城市表数据
			市city1 =新城区(“江苏”,“连云港”,“灌云”,222200);
			市城2 =新城区(“江苏”,“灌云”,“伊山”,222200);
			dbUtils.insert(city1,2);
			dbUtils.insert(城2,2);

			//添加狗表数据
			的for(int i = 0; I <20;我++){
				狗DOG1 =新的狗(“50”,2,“公”,“小黑”);
				狗DOG2 =新的狗(“50”,2,“母”,“小瘦”);
				dbUtils.insert(DOG1,3);
				dbUtils.insert(DOG2,3);
			}
			打破;

		默认:
			打破;
		}
	}

}
GSON直接使用了源代码,没有导入的jar包

下载地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值