android用pull解析出一个xml文档之后需要根据xml文档中的内容动态创建sqlite数据库并进行插入、查询和修改操作,xml文档中的数据有可能变化

进田大哥哥 2016-08-03 09:56:14
现正在进行一个采集电线杆的安卓项目,项目中需要用到根据解析xml出来的数据进行动态建表和插入,查询,修改的相关操作,其中xml文档的内容大致如下: <Layers Name="输电杆塔">
<Layer Name="SDGTWLG" Alias="输电杆塔(物理杆)" Type="中高压" EntityType="点" DeviceType="物理杆" Mark="010.png" Symbol="F_MC" Visable="True" NameGroup="F_MC">
<Field Name="F_GUID" Type="nvarchar" Length="36" IsSystemField="True" Required="True" Unique="False" Default="" Alias="GUID" Sort="0" Visable="False" Selection="" OperateCode="1"/>
<Field Name="F_GUID" Type="nvarchar" Length="36" IsSystemField="True" Required="True" Unique="False" Default="" Alias="GUID" Sort="0" Visable="False" Selection="" OperateCode="1"/>
<Field Name="F_SLSB_GUID" Type="text" Length="0" IsSystemField="True" Required="False" Unique="False" Default="" Alias="上联设备" Sort="5" Visable="False" Selection="" OperateCode="1"/>
<Field Name="F_SLSB_LAYER" Type="text" Length="0" IsSystemField="True" Required="False" Unique="False" Default="" Alias="上联图层" Sort="10" Visable="False" Selection="" OperateCode="1"/>
<Field Name="F_XH" Type="int" Length="32" IsSystemField="False" Required="False" Unique="False" Default="" Alias="序号" Sort="15" Visable="False" Selection="" OperateCode="1"/>
<Field Name="F_YWXTID" Type="text" Length="32" IsSystemField="False" Required="False" Unique="False" Default="" Alias="业务系统ID" Sort="20" Visable="True" Selection="" OperateCode="1"/>
<Field Name="F_MC" Type="text" Length="32" IsSystemField="False" Required="True" Unique="True" Default="" Alias="名称" Sort="25" Visable="True" Selection="" OperateCode="1"/>
<Field Name="F_GTCZ" Type="text" Length="32" IsSystemField="False" Required="True" Unique="False" Default="" Alias="杆塔材质" Sort="30" Visable="True" Selection="铁塔,钢管塔,钢管杆,水泥杆,铁杆,角钢塔" OperateCode="1"/>
<Field Name="F_GTXZ" Type="text" Length="32" IsSystemField="False" Required="True" Unique="False" Default="" Alias="杆塔性质" Sort="35" Visable="True" Selection="直线,耐张" OperateCode="1"/>
<Field Name="F_GTXH" Type="text" Length="32" IsSystemField="False" Required="False" Unique="False" Default="" Alias="杆塔型号" Sort="40" Visable="True" Selection="" OperateCode="1"/>
<Field Name="F_HCG(M)" Type="text" Length="32" IsSystemField="False" Required="False" Unique="False" Default="" Alias="呼称高(m)" Sort="45" Visable="True" Selection="" OperateCode="1"/>
<Field Name="F_GTG(M)" Type="text" Length="32" IsSystemField="False" Required="False" Unique="False" Default="" Alias="杆塔高(m)" Sort="50" Visable="True" Selection="" OperateCode="1"/>
<Field Name="F_YXZT" Type="text" Length="32" IsSystemField="False" Required="False" Unique="False" Default="在运" Alias="运行状态" Sort="55" Visable="True" Selection="未投运,在运,现场留用" OperateCode="1"/>
<Field Name="F_YXDW" Type="text" Length="32" IsSystemField="False" Required="False" Unique="False" Default="" Alias="运行单位" Sort="60" Visable="False" Selection="" OperateCode="1"/>
<Field Name="F_WHBZ" Type="text" Length="32" IsSystemField="False" Required="False" Unique="False" Default="" Alias="维护班组" Sort="65" Visable="False" Selection="" OperateCode="1"/>
<Field Name="F_ZCXZ" Type="text" Length="32" IsSystemField="False" Required="False" Unique="False" Default="" Alias="资产性质" Sort="70" Visable="False" Selection="国家电网公司,区域电网公司,省(直辖市、自治区)公司,县公司,用户,股份制" OperateCode="1"/>
<Field Name="F_ZCDW" Type="text" Length="32" IsSystemField="False" Required="False" Unique="False" Default="" Alias="资产单位" Sort="75" Visable="False" Selection="" OperateCode="1"/>
<Field Name="F_JDXZB" Type="text" Length="32" IsSystemField="False" Required="True" Unique="False" Default="" Alias="经度(X坐标)" Sort="80" Visable="True" Selection="" OperateCode="1"/>
<Field Name="F_WDYZB" Type="text" Length="32" IsSystemField="False" Required="True" Unique="False" Default="" Alias="纬度(Y坐标)" Sort="85" Visable="True" Selection="" OperateCode="1"/>
<Field Name="F_GC" Type="text" Length="32" IsSystemField="False" Required="False" Unique="False" Default="" Alias="高程" Sort="90" Visable="True" Selection="" OperateCode="1"/>
<Field Name="F_CJR" Type="text" Length="0" IsSystemField="True" Required="False" Unique="False" Default="" Alias="采集人" Sort="120" Visable="False" Selection="" OperateCode="1"/>
<Field Name="F_CJSJ" Type="datetime" Length="0" IsSystemField="True" Required="False" Unique="False" Default="" Alias="采集时间" Sort="125" Visable="False" Selection="" OperateCode="1"/>
<Field Name="F_SJHM" Type="text" Length="0" IsSystemField="True" Required="False" Unique="False" Default="" Alias="手机号码" Sort="130" Visable="False" Selection="" OperateCode="1"/>
<Field Name="F_RWID" Type="text" Length="0" IsSystemField="True" Required="False" Unique="False" Default="" Alias="任务ID" Sort="135" Visable="False" Selection="" OperateCode="1"/>


其中layer层的name属性的值作为数据库名和表名,Field层的name作为表的字段,type和length分别作为字段类型和长度。
文档中有很多个这样的Layer,而且字段不一样

String sql="create table "+layerEntity.getName()+"(";
StringBuilder sb=new StringBuilder(sql);
for (int m=0;m<fieldEntities.size();m++){
fieldEntity=fieldEntities.get(m);
if (fieldEntity.getName().equals("F_GUID")){
sb.append(fieldEntity.getName()+" "+fieldEntity.getType()+"("+fieldEntity.getLength()+")"+
"PRIMARY KEY NOT NULL");
}
sb.append(","+fieldEntity.getName()).append(" "+fieldEntity.getType()+"("+
fieldEntity.getLength()+")");
if (fieldEntity.getRequired().equals("True")) {
sb.append(", NOT NULL");
}
}
sb.append(");");
try {
db.execQuery(sb.toString());
} catch (DbException e) {
e.printStackTrace();
}
这个是我写的建表的代码,可是我不懂怎么写插入、查询和修改的操作了,,这个xml文档后期客户那边如果设备升级,xml文档中的行可能会增加,也就是表中的字段需要增加,所以希望各路大神、大牛帮忙。
...全文
138 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
进田大哥哥 2016-08-04
  • 打赏
  • 举报
回复
简单的插入、查询和修改是数据库基本操作我会,但是现在的问题是要根据xml文档里面的内容进行这些操作,这些都是动态的
adfldk 2016-08-04
  • 打赏
  • 举报
回复
插入、查询和修改是数据库基本操作吧 先看看网上例子?
进田大哥哥 2016-08-03
  • 打赏
  • 举报
回复
急啊,有大神看到,帮忙回复一下,在线等,谢谢了

80,490

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧