Java读取接口数据并保存到数据库

public class Test05GetData {
	//guo sheng shi xian zhen cun的表结构完全一样。数据全部读取完毕之后再将数据整合到同一张表中
	protected static String parentTable = "sheng";// 父表
	protected static String insertTable = "shi";// 字表
	protected static String daima = "";// 代码
	protected static int dataCount = 0;// 计数器
	protected static int totalData = 0;// 父表总记录数
	protected static Connection connection = null;
	protected static Statement statement = null;
	protected static ResultSet resultSet = null;

	public static void main(String[] args) {
		connection = DBConnection.getOracleConnection();
		statement = null;
		resultSet = null;
		List<String>list = new ArrayList<String>();
		try {
			statement = connection.createStatement();
			resultSet = statement.executeQuery("select * from " + parentTable);
			while (resultSet.next()) {
				totalData ++;
				daima = resultSet.getString("daima");
				list.add(daima);
			}
			System.out.println("tatalData:" + totalData);
		} catch (Exception e) {
			e.printStackTrace();
		}
		for (Iterator iterator = list.iterator(); iterator.hasNext();) {
			String string = (String) iterator.next();
			dataCount ++;
			double x1 = ((double)dataCount/(double)totalData)*100.0 ;
			System.out.print("第" + dataCount + "个父项,");
			System.out.println(String.format("%.2f", x1) + "%");//显示完成的百分比
			query(string);
		}

		try {
			if (resultSet != null) {
				resultSet.close();
			}
			if (statement != null) {
				statement.close();
			}
			if(connection != null){
				connection.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void query(String daima) {
		String url = "http://api.dangqian.com/apidiqu2/api.asp?id=" + daima;
		StringBuilder stringBuilder = new StringBuilder();
		URL oracle;
		try {
			oracle = new URL(url);
			URLConnection yc = oracle.openConnection();
			BufferedReader br = new BufferedReader(new InputStreamReader(yc.getInputStream()));
			String inputLine = null;
			while ((inputLine = br.readLine()) != null) {
				stringBuilder.append(inputLine);
			}
			br.close();
			String str = stringBuilder.toString();
			StringBuffer stringBuffer = new StringBuffer(str);
			stringBuffer.delete(0, 9);
			stringBuffer.deleteCharAt(stringBuffer.length() - 1);
			System.out.println(stringBuffer);
			JSONObject jsonobject = JSONObject.fromObject(stringBuffer.toString());
			JSONObject jsonobject1 = (JSONObject) jsonobject.get("list");
			// System.out.println(jsonobject1);
			List<Shi> list = new ArrayList<Shi>();
			for (Iterator iter = jsonobject1.keys(); iter.hasNext();) {
				String key = (String) iter.next();
				Shi shi = (Shi) JSONObject.toBean(
						(JSONObject) jsonobject1.get(key), Shi.class);
				list.add(shi);
			}
			saveData(list);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	protected static void saveData(List<Shi>list){//将读取的数据存储到数据库
		String sql = "insert into "+ insertTable+" values(?,?,?,?)";
		Shi shi = null;
		int size = list.size();
		try {
			for (int i = 0; i < size; i++) {
				shi = list.get(i);
				sql = "insert into "+ insertTable+" (zidi,diming,daima,dengji)values("+shi.getZidi()+",‘"+shi.getDiming()+"‘,‘"+shi.getDaima()+"‘,"+shi.getDengji()+")";
				statement.execute(sql);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}

http://api.dangqian.com/apidiqu2/api.asp?id=420000000000

返回的数据如下

callback({ "is_login":1, "site":"中国行政区划api", "url":"http://api.dangqian.com/apidiqu2/", "jieshao":"省市县乡村五级行政区划地址信息库", "idengji":"2", "idiming":"湖北", "idaima":"420000000000", "diming1":"中国", "daima1":"000000000000", "diming2":"湖北省", "daima2":"420000000000", "diming3":"", "daima3":"", "diming4":"", "daima4":"", "diming5":"", "daima5":"", "diming6":"", "daima6":"", "zidi":14, "banben":"2012", "zhizao":"王建然", "qq":"250247045", "riqi":"2013-4-21 16:08:25", "shike":"2014-8-25 9:29:46", "id":"17", "list":{ "wjr1":{"dengji":"3","diming":"武汉市","daima":"420100000000","zidi":13}, "wjr2":{"dengji":"3","diming":"黄石市","daima":"420200000000","zidi":6}, "wjr3":{"dengji":"3","diming":"十堰市","daima":"420300000000","zidi":8}, "wjr4":{"dengji":"3","diming":"宜昌市","daima":"420500000000","zidi":13}, "wjr5":{"dengji":"3","diming":"襄阳市","daima":"420600000000","zidi":9}, "wjr6":{"dengji":"3","diming":"鄂州市","daima":"420700000000","zidi":3}, "wjr7":{"dengji":"3","diming":"荆门市","daima":"420800000000","zidi":5}, "wjr8":{"dengji":"3","diming":"孝感市","daima":"420900000000","zidi":7}, "wjr9":{"dengji":"3","diming":"荆州市","daima":"421000000000","zidi":8}, "wjr10":{"dengji":"3","diming":"黄冈市","daima":"421100000000","zidi":10}, "wjr11":{"dengji":"3","diming":"咸宁市","daima":"421200000000","zidi":6}, "wjr12":{"dengji":"3","diming":"随州市","daima":"421300000000","zidi":3}, "wjr13":{"dengji":"3","diming":"恩施土家族苗族自治州","daima":"422800000000","zidi":8}, "wjr14":{"dengji":"3","diming":"省直辖县级行政区划","daima":"429000000000","zidi":4} } })

只需要解析出其中的list部分存储到数据库即可。

以上内容仅供技术分享,涉及到的任何法律问题与本人及51cto无关。请勿用于商业用途!

时间: 2024-11-03 05:41:26

Java读取接口数据并保存到数据库的相关文章

NPOI操作excel——利用反射机制,NPOI读取excel数据准确映射到数据库字段

> 其实需求很明确,就是一大堆不一样的excel,每张excel对应数据库的一张表,我们需要提供用户上传excel,我们解析数据入库的功能实现. 那么,这就涉及到一个问题:我们可以读出excel的表头,但是怎么知道每个表头具体对应数据库里面的字段呢? 博主经过一段时间的思考与构思,想到一法:现在的情况是我们有excel表A,对应数据库表B,但是A与B具体属性字段的映射关系我们不知.那我们是不是可以有一个A到B的映射文件C呢? 我想,说到这,大家就很明了了... 第一步:为每张excel创建一个与

python 读取SQLServer数据插入到MongoDB数据库中

# -*- coding: utf-8 -*-import pyodbcimport osimport csvimport pymongofrom pymongo import ASCENDING, DESCENDINGfrom pymongo import MongoClientimport binascii '''连接mongoDB数据库'''client = MongoClient('10.20.4.79', 27017)#client = MongoClient('10.20.66.10

java把excel数据批量导入到数据库

java把excel数据批量导入到数据库中,java导入excel数据代码如下 1.    public List<Choice> GetFromXls(String xlsname){ 2. 3.        List<Choice> choices = new ArrayList<Choice>(); 4.        Choice choice=null; 5.        try { 6.            java.io.File file=new

python爬取数据并保存到数据库中(第一次练手完整代码)

1.首先,下载需要的模块requests, BeautifulSoup, datetime, pymysql(注意,因为我用的python3.7,不支持mysqldb了),具体的下载方法有pip下载,或者使用Anaconda版本python的童鞋可以使用conda下载. 2.创建conndb,py,包含数据库的连接断开,增删改查等操作: #!/usr/bin/env python # -*- coding:utf-8 -*- import pymysql def conn_db(): # 连接数

Java读取excel数据保存入库

Java开发读取excel表格数据入库保存: List<Map<String, Object>> list = null; String filePath = filePaths + "/" + userID + "/" + accountID + "/" + busDate + "/"; String fileName = FileUpload.fileUp(file, filePath, "

Java读取CSV数据并写入txt文件

读取CSV数据并写入txt文件 package com.vfsd; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import com.csvreader.CsvReader; /****************************************************************************

Spark1.6.2 java实现读取json数据文件插入MySql数据库

public class Main implements Serializable { /** * */ private static final long serialVersionUID = -8513279306224995844L; private static final String MYSQL_USERNAME = "demo"; private static final String MYSQL_PWD = "demo"; private stati

java读取本地txt文件并插入数据库

package com.cniia.ny.web.control.configManage; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; im

使用Java读取XML数据

---------------siwuxie095 工程名:ReadXML 包名:com.siwuxie095.xml 类名:ReadXML.java 打开资源管理器,在工程 ReadXML 文件夹下,放入 一个 XML 文件:languages.xml languages.xml 的内容: 工程结构目录如下: 代码: package com.siwuxie095.xml; import java.io.File; import java.io.IOException; import javax