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包