✎
编程开发网
首页
C语言
C++
面试
Linux
函数
Windows
数据库
下载
搜索
当前位置:
首页
->
AI编程基础
->
JAVA
省市二级联动数据库生成代码(JAVA)(二)
2014-11-24 09:12:32
·
作者:
·
浏览:
1
标签:
省市
二级
联动
数据库
生成
代码
JAVA
//定义保存省、市数据的数据结构。从里向外看,Map
保存的是 “省=>简拼” 这样的数据
//如“河北=>HB”。List里面的Map
则保存着“市=>简拼”的数据,如“保定=>BD”,而list集合
//保存该省下所有市的集合。最外层的Map就是“省=>各市集合”的关联集合,这样省市关系就确定了。
Map
, List
>> provinceCity = new LinkedHashMap
, List
>>();
try {
//定义输入流,可以使用readline()读取一行
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(provinceFile), "UTF-8"));
String provinceName = "";
while ((provinceName = br.readLine()) != null) { //先读第一行,省的名字
//定义保存“省=>简拼”的Map
Map
province = new LinkedHashMap
();
//定义保存“市=>简拼”Map的List集合,结构为[{保定=>BD}, {沧州=>CZ},……]
List
> citiesArray = new ArrayList
>();
//调用汉字转拼音方法
wordToPinYinSZM(provinceName.trim(), province);
//读取第二行,该省下的所有市区
String cityNames = br.readLine();
//文件中的每个市区用两个空格格开,所以以两个空格分隔成市区的数组
String[] cities = cityNames.split(" ");
for(int j = 0; j < cities.length; j++) {
//定义保存“市=>简拼”Map
Map
city = new LinkedHashMap
();
String cityName = cities[j].trim();
//调用汉字转拼音方法
wordToPinYinSZM(cityName, city);
//添加到list集合中
citiesArray.add(city);
}
//添加到“省=>市的集合”的Map中
provinceCity.put(province, citiesArray);
}
//调用转换为sql语句的代码
convertMapToSql(provinceCity);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 把“省=>市的集合”Map转换为SQL语句
* @param provinceCity
*/
public static void convertMapToSql(Map
, List
>> provinceCity) {
//获取最外层Map的EntrySet 结构为[{河北=>HB, [{保定=>BD}, {石家庄=>sjz},{……}]},{……}]
Set
, List
>>> provinceEnties = provinceCity.entrySet();
//获取迭代器
Iterator
, List
>>> itPE = provinceEnties.iterator();
//定义
数据库
中,省的ID从1000000开始
long provinceId = 1000000;
while(itPE.hasNext()) {
//获取一个Entry键-值对
Entry
, List
>> proviceEntry = itPE.next();
//Key为省,Value为市的List集合
Map
provinces = proviceEntry.getKey();
//获取省份的Entry,结构为[{河北=>HB}, {北京=>BJ}] key为中文,value为简拼
Set
> proEntries = provinces.entrySet();
Iterator
> proIt = proEntries.iterator();
while(proIt.hasNext()) {
Entry
proEntry = proIt.next();
String provinceName = proEntry.getKey();
String provincePinYin = proEntry.getValue();
//组合sql语句
StringBuilder sb = new StringBuilder();
//定义的表结构为:id, type, name, short,分别为id,类型(1为1级,如省,2为2级,如市),父ID即市的所属省份, 名字, 简拼
sb.append("insert into city values ('");
sb.append(provinceId).append("','").append("1','','").append(provinceName).append("', '").append(provincePinYin).append("');");
//我没有生成sql文件,而是直接显示在console里面,大家可以直接从里面复制
首页
上一页
1
2
3
4
5
6
7
下一页
尾页
2
/12/12