因为中国外汇交易中心使用的数据格式为json,JAVA提供了专门解析json的lib,我们首先要引入该lib(解析json的依赖包有几个,csdn有提供所有lib的压缩包,我用的是json-lib-2.4-jdk15.rar,大家可以在csdn里搜索一下,解压出来即可)。以下是先获得中国外汇交易中心的json字符内容,然后解析json得到的汇率写入oracle 数据库Table:azk_file,所以还需要jdbc驱动包(这个驱动包CSDN也很容易找到)。

如果你是ERP开发者,且刚好是为TOP GP开发 ,那么你可以直接copy,然后打包成jar,在程序里调用这个jar即可。你懂的。

先看MAIN部分(传入参数args[0]为要取得汇率的日期):

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.MalformedURLException;

import java.net.URL;

import java.net.URLConnection;

import java.text.ParseException;

import net.sf.json.JSONArray;

import net.sf.json.JSONObject;

public class GetAooi070Data {

public static void main(String[] args) throws ParseException {

String date = args[0];

String url = "http://www.chinamoney.com.cn/r/cms/www/chinamoney/data/fx/ccpr.json?t=" + date; // url链接

String json = loadJson(url); // 获得json字符串

JSONObject object = JSONObject.fromObject(json); // 获得jason对象

JSONArray array = object.getJSONArray("records");// 丢掉头,只取records部分数据

new inputTiptop("数据库账号", "密码", "数据库IP地址", "数据库Schema", date).insertData(array);

}

public static String loadJson(String url) {

StringBuilder json = new StringBuilder();

try {

URL urlObject = new URL(url);

URLConnection uc = urlObject.openConnection();

BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream(), "utf-8"));

String inputLine = null;

while ((inputLine = in.readLine()) != null) {

json.append(inputLine);

}

in.close();

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return json.toString();

}

}

再看CLASS部分(这里取了几个币别,其中日元对RMB汇率要注意换算,官方的是100日元对1人民币的汇率,结果要除以100的):

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import net.sf.json.JSONArray;

public class inputTiptop {

// 定义数据库变量

private String url;

private String ipaddress;

private String passname;

private String password;

private String date;

private String database;

private String driver;

private Connection con;

public inputTiptop(String p_name, String p_word, String p_ip, String p_db, String p_date) // 构造指定帐号密码数据库链接

{

passname = p_name;

password = p_word;

ipaddress = p_ip;

database = p_db;

driver = "oracle.jdbc.driver.OracleDriver";

date = p_date;

try {

Class.forName(driver);

} catch (ClassNotFoundException e) {

System.out.println(e);

e.printStackTrace();

}

url = "jdbc:oracle:thin:@" + ipaddress + ":1521" + ":" + database;

}

public void insertData(JSONArray array) {

String sql = "Insert into azk_file (azk01,azk02,azk03,azk04,azk041,azk05,azk051,azk052, "

+ " azkuser,azkgrup,azkmodu,azkdate,azkoriu,azkorig,azktime) "

+ " Values (?, to_date(?, 'yyyy-mm-dd'), '', '', ? , '', '', '', '', '', '', '', '', '', '') ";

try {

con = DriverManager.getConnection(url, passname, password);

con.setAutoCommit(false);

PreparedStatement ps = con.prepareStatement(sql);// SQL预处理

int flag = 0;

for (int i = 0; i < (array.size()); i++) {

if (array.getJSONObject(i).getString("vrtEName").equals("USD/CNY")) {

ps.setString(1, "USD");

ps.setString(2, date);

ps.setFloat(3, Float.parseFloat(array.getJSONObject(i).getString("price")));

ps.addBatch();

flag = 1 + flag;

} else if (array.getJSONObject(i).getString("vrtEName").equals("EUR/CNY")) {

ps.setString(1, "EUR");

ps.setString(2, date);

ps.setFloat(3, Float.parseFloat(array.getJSONObject(i).getString("price")));

ps.addBatch();

flag = 1 + flag;

} else if (array.getJSONObject(i).getString("vrtEName").equals("100JPY/CNY")) {

ps.setString(1, "JPY");

ps.setString(2, date);

ps.setFloat(3, Float.parseFloat(array.getJSONObject(i).getString("price")) / 100);

ps.addBatch();

flag = 1 + flag;

}else {

continue;

};

}

if (flag == 3){

int rst[] = ps.executeBatch();// 执行批处理,判断正确错误

if (rst.length > 0) {

con.commit();

System.out.println(date.toString() + " insert " + passname + " success!");

} else {

con.rollback();

System.out.println(date.toString() + " insert " + passname + " fail!");

}

}

ps.close();

con.close();

} catch (SQLException e) {

System.out.println(e);

e.printStackTrace();

}

}

}

———————

作者:居士爱吃泡面

原文:https://blog.csdn.net/ERP_TOP_DD/article/details/81502298

java获取货币汇率_JAVA抓取中国外汇交易中心各币别对RMB汇率相关推荐

  1. JAVA抓取中国外汇交易中心各币别对RMB汇率

    因为中国外汇交易中心使用的数据格式为json,JAVA提供了专门解析json的lib,我们首先要引入该lib(解析json的依赖包有几个,csdn有提供所有lib的压缩包,我用的是json-lib-2 ...

  2. java保存火车票信息_java抓取12306火车余票信息

    最近在弄一个微信的公众帐号,涉及到火车票查询,之前用的网上找到的一个接口,但只能查到火车时刻表,12306又没有提供专门的查票的接口.今天突然想起自己直接去12306上查询,抓取查询返回的数据包,这样 ...

  3. Java获取游戏头像_java爬取堆糖所有头像(高质量版头像)

    百度贴吧的用户头像爬下来之后,图片经过裁剪,尺寸太小,都是110*110之类的,并且有很多用户被注销后,头像是缩略图重复,所以爬了堆糖里面的头像,堆糖里的头像质量还是蛮高的. 堆糖官网:www.dui ...

  4. java取网页数据_Java抓取网页数据(原来的页面+Javascript返回数据)

    转载请注明出处. 有时候因为种种原因.我们须要採集某个站点的数据.但因为不同站点对数据的显示方式略有不同! 本文就用Java给大家演示怎样抓取站点的数据:(1)抓取原网页数据.(2)抓取网页Javas ...

  5. 基于Java的阿里妈妈数据抓取技术

    基于Java的阿里妈妈数据抓取技术 前言: 对于需要登录的网站爬虫最大的困难就是需要登录,然后才能获取到数据,如微博,阿里妈妈,webqq等.之前也有看过使用浏览器登录到网站后直接从浏览器中获取coo ...

  6. 基于Java的网络爬虫实现抓取网络小说(一)

    基于Java的网络爬虫实现抓取网络小说(一) 今天开始写点东西,一方面加深印象一方面再学习. 网络爬虫(Web crawler),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,它们被广泛用 ...

  7. php正则获取li,用正则表达式抓取网页中的ul 和 li标签中最终的值!

    获取你要抓取的页面 const string URL = "http://www.hn3ddf.gov.cn/price/GetList.html?pageno=1";       ...

  8. 《货币的教训》精髓:人民币汇率是一个市场行为,它是在中国外汇交易中心这个市场中形成的,不过由于央行购买了大部分中国外汇交易市场中的外汇,导致人民币汇率形成体制变成中国的“第二货币动脉”

    <货币的教训>书中的精髓:人民币汇率是一个市场行为,它是在中国外汇交易中心这个市场中形成的,不过由于央行购买了大部分中国外汇交易市场中的外汇,导致人民币汇率形成体制变成中国的"第 ...

  9. TurboMail邮件系统与中国外汇交易中心合作

    2019独角兽企业重金招聘Python工程师标准>>> 中国外汇交易中心暨全国银行间同业拆借中心(简称交易中心)于1994年4月18日成立,是中国人民银行总行直属事业单位.主要职能是 ...

最新文章

  1. 程序模拟抽奖流程图_一道与联欢会相关的概率统计题目的模拟仿真
  2. HDU 1816, POJ 2723 Get Luffy Out(2-sat)
  3. CTFshow 命令执行 web36
  4. android手机存储大小设置在哪里看,Android 最新获取手机内置存储大小,SD卡存储空间大小方法...
  5. C语言函数中的参数有const的问题
  6. 表白c语言程序设计,C语言编程学习打造表白神器:亲爱的让我们相爱在一起
  7. rabbitmq的相关知识
  8. php 注册树,php常用设计模式(单例,工厂,注册树模式)
  9. cesium billboard 设置距离控制可见度
  10. Angular 下拉搜索框实现
  11. Tensorflow实现MLP
  12. 药学专业报计算机一级有用吗,全网友泣泪劝阻!高考结束之后,什么专业千万不能报?...
  13. informix 数据库锁表分析和解决方法
  14. 2014ACM/ICPC亚洲区西安站 F题 color (组合数学,容斥原理)
  15. Flask项目之手机端租房网站的实战开发(十三)
  16. 用TestComplete实现一个关键字驱动测试框架
  17. 【python爬虫】爬取《英雄联盟》英雄及皮肤图片数据
  18. Linux 驱动开发 六十六:多点触控(MT)协议
  19. 一个域名下面能搭建多个网站吗?
  20. 有哪些分体式降噪耳机推荐?最值得入手的分体式降噪耳机

热门文章

  1. Magisk工具使用指南
  2. 售后支持领域的服务指标
  3. Java Exer0908 从键盘输入皆为正整数的数组元素,数组长度不确定,请找出数组中重复的数字并输出。
  4. 华为畅享二十Android是,华为畅享20 Pro智慧护眼怎么样?华为畅享20 Pro智慧护眼详解...
  5. Vue全家桶系列之Vuex(二)
  6. cocos creater 查线上bug之-解密反编译jsc
  7. 读书笔记---《编写可读代码的艺术》
  8. seoer请不要把自己定位成seoer
  9. c语言计算时钟的夹角不用if,C语言学习笔记——计算时钟的夹角
  10. 做个网页游戏送女票当情侣礼物