日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java从端口获取数据库_Java之通过接口获取数据并用JDBC存储到数据库中

發布時間:2023/12/2 java 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java从端口获取数据库_Java之通过接口获取数据并用JDBC存储到数据库中 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近做數據同步功能,從接口獲取數據然后存到數據庫中以便后續對數據進行相關操作,下面就貼一下相關代碼。

1 import com.alibaba.fastjson.JSON;

2 import com.alibaba.fastjson.JSONObject;

3

4 public class Digests {

5 private static final String APPKEY = "appkey";

6 private static final String SECRET = "secret";

7 private static final String OPENAPI_IP_PORT_HTTP = "ip";

8

9 /**

10 * 分頁獲取數據。

11 */

12 private static final String GET_DATA = "balabala";

13

14 //md5加密

15 public static final String md5(String s) {

16 char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',

17 'a', 'b', 'c', 'd', 'e', 'f' };

18 try {

19 MessageDigest mdTemp = MessageDigest.getInstance("MD5");

20 try {

21 mdTemp.update(s.getBytes("UTF-8"));

22 } catch (UnsupportedEncodingException e) {

23 mdTemp.update(s.getBytes());

24 }

25 byte[] md = mdTemp.digest();

26 int j = md.length;

27 char[] str = new char[j * 2];

28 int k = 0;

29 for (int i = 0; i < j; i) {

30 byte byte0 = md[i];

31 str[(k )] = hexDigits[(byte0 >>> 4 & 0xF)];

32 str[(k )] = hexDigits[(byte0 & 0xF)];

33 }

34 return new String(str).toUpperCase();

35 } catch (Exception e) {

36 }

37 return null;

38 }

39

40 //創建token

41 public static final String buildToken(String url, String paramJson,

42 String secret) {

43 String tempUrl = null;

44 if (url.contains("https://"))

45 tempUrl = url.substring("https://".length());

46 else {

47 tempUrl = url.substring("http://".length());

48 }

49 int index = tempUrl.indexOf("/");

50 String URI = tempUrl.substring(index);

51 String[] ss = URI.split("\\?");

52 if (ss.length > 1) {

53 return md5(ss[0] ss[1] secret);

54 }

55 return md5(ss[0] paramJson secret);

56 }

57

58 /**

59 * HTTP方式 分頁獲取數據。

60 */

61 public static String getData(double pageNo, Long startTime) throws Exception { //第一個參數是當前頁數,第二個參數是請求數據的開始時間(為毫秒數)

62 String url = OPENAPI_IP_PORT_HTTP GET_DATA ;

63 Map map = new HashMap();

64 JSONObject jsonObject = JSONObject.parseObject(getDefaultUserUUID());

65 String opUserUuid = jsonObject.getString("data");

66 //System.out.println(opUserUuid);

67 map.put("appkey", APPKEY);// 設置APPKEY

68 map.put("time", System.currentTimeMillis());// 設置時間參數

69 map.put("pageNo", pageNo);// 設置當前頁數

70 map.put("pageSize", 1000);// 設置一頁多少條

71 map.put("opUserUuid", opUserUuid);// 設置操作用戶UUID

72 map.put("startTime", startTime);// 設置開始時間

73 map.put("endTime", System.currentTimeMillis());// 設置結束時間

74 String params = JSON.toJSONString(map);

75 System.out.println(" ====== getData請求參數:【" params "】");

76 String data = HttpClientSSLUtils.doPost(

77 url "?token="

78 Digests.buildToken(url "?" params, null, SECRET),

79 params);

80 System.out.println(" ====== getData請求返回結果:【{" data "}】");

81

82 return data;

83 }

84 }

從接口拿到數據后,下面就將數據存到數據庫中:

1 import net.sf.json.JSONArray;

2 import net.sf.json.JSONObject;

3

4 public class SyncDataFn {

5

6 public int jxJson() throws Exception {

7 //此處省略數據庫連接相關語句,具體見上一篇properties配置文件連接數據庫

8

9 // 創建Statement用于執行SQL語句

10 connection.setAutoCommit(false);

11 stmt = connection.createStatement();

12

13 Long maxtime;

14 String sqlMaxtime = "select max(eventTime) as maxTime from data";

15 ResultSet rs1 = stmt.executeQuery(sqlMaxtime); // 查詢數據庫看數據是否已經存在,表示只更新沒有更新進來的數據

16 if (rs1.next()) { // 該條數據存在

17 maxtime = rs1.getLong("maxTime");

18 } else {

19 maxtime = (long) 0;

20 }

21 rs1.close();

22

23 //得到json數據

24 String json = Digests.getDoorEventsHistory(1, maxtime);

25 JSONObject jsonObject = (JSONObject) JSONObject.fromObject(json);

26 String to = (String) jsonObject.getString("data");

27 JSONObject toObject = JSONObject.fromObject(to);

28 double total = Integer.parseInt(toObject.getString("total"));

29 int page = (int) Math.ceil(total / 1000);

30 for (double k = 1; k <= page; k ) {

31

32 //得到json數據

33 String jsonTemp = Digests.getData(k, maxtime);

34 String data = JSONObject.fromObject(jsonTemp).getString("data");

35 String list = JSONObject.fromObject(data).getString("list");

36

37

38 JSONArray jsonArr = JSONArray.fromObject(list);

39

40 String dataName[] = new String[jsonArr.size()];

41 String eventType[] = new String[jsonArr.size()];

42 String eventTime[] = new String[jsonArr.size()];

43 String eventName[] = new String[jsonArr.size()];

44 String cardNo[] = new String[jsonArr.size()];

45 String personId[] = new String[jsonArr.size()];

46 String personName[] = new String[jsonArr.size()];

47 String deptName[] = new String[jsonArr.size()];

48

49 for (int i = 0; i < jsonArr.size(); i ) {

50

51 dataName[i] = jsonArr.getJSONObject(i).getString("dataName");

52 eventType[i] = jsonArr.getJSONObject(i).getString("eventType");

53 eventTime[i] = jsonArr.getJSONObject(i).getString("eventTime");

54 eventName[i] = jsonArr.getJSONObject(i).getString("eventName");

55 cardNo[i] = jsonArr.getJSONObject(i).getString("cardNo");

56 personId[i] = jsonArr.getJSONObject(i).getString("personId");

57 personName[i] = jsonArr.getJSONObject(i).getString("personName");

58 deptName[i] = jsonArr.getJSONObject(i).getString("deptName");

59 //如果得到的字段有null的,做相應處理

60 cardNo[i] = (cardNo[i] == "null") ? null "," : "'"

61 cardNo[i] "'";

62 personName[i] = (personName[i] == "null") ? null "," : "'"

63 personName[i] "',";

64 deptUuid[i] "',";

65 deptName[i] = (deptName[i] == "null") ? null "," : "'"

66 deptName[i] "',";

67

68 strSQL = "INSERT into door_events_history values(AUTOID_SEQ.NEXTVAL,"

69 "'" dataName[i] "','" eventType[i] "," eventTime[i] ",'" eventName[i] "'," cardNo[i] "," personId[i] "," personName[i] deptName[i] ")";

70

71 try {

72 String sql = "select cardNo,eventTime from data where cardNo = "

73 cardNo[i]

74 " and eventTime = "

75 eventTime[i];

76 ResultSet rs = stmt.executeQuery(sql); // 查詢數據庫看數據是否已經存在

77 if (rs.next()) { // 該條數據已經存在

78 } else {

79 stmt.executeUpdate(strSQL);

80 count ;

81 }

82 rs.close();

83 } catch (Exception e) {

84 e.printStackTrace();

85 } finally {

86

87 }

88 }

89

90 connection.commit();

91 } // for結束

92

93 // 先關閉Statement

94 if (stmt != null)

95 try {

96 stmt.close();

97 } catch (SQLException e) {

98 e.printStackTrace();

99 }

100 // 后關閉Connection

101 if (connection != null)

102 try {

103 connection.close();

104 } catch (SQLException e) {

105 e.printStackTrace();

106 }

107 log.info("當前時間===" new Date());

108 log.info("同步結束");

109 log.info("共更新了" count "條數據");

110 return count;

111 }

112 }

其中AUTOID_SEQ.NEXTVAL為Oracle中的自增序列

至此,數據已經同步到指定的數據庫中啦,打完收工!

注意:拼接sql的時候一定要按照字段類型來看是否增加單引號,否則插入數據會報錯。來源:https://www.icode9.com/content-2-358051.html

總結

以上是生活随笔為你收集整理的java从端口获取数据库_Java之通过接口获取数据并用JDBC存储到数据库中的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。