JdbcUtils.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. package com.mes.util;
  2. import org.slf4j.Logger;
  3. import org.slf4j.LoggerFactory;
  4. import java.sql.Connection;
  5. import java.sql.DriverManager;
  6. import java.sql.SQLException;
  7. import java.sql.Statement;
  8. public class JdbcUtils {
  9. public static final Logger log = LoggerFactory.getLogger(JdbcUtils.class);
  10. //通过上面的工具就可以获取到properties文件中的键值从而可以加载驱动 获取链接 从而 可以增删改查
  11. public static Connection conn = null;
  12. public static String Drivde="org.sqlite.JDBC";
  13. public static String DATABASE_URL="jdbc:sqlite:mes_db.db";
  14. public static Connection getConn(){
  15. try {
  16. Class.forName(Drivde);// 加载驱动,连接sqlite的jdbc
  17. conn = DriverManager.getConnection(DATABASE_URL);//连接数据库zhou.db,不存在则创建
  18. System.out.println("连接到SQLite数据库成功!");
  19. create_bw_record();//初始化结构表
  20. //create_measure_data();//初始化测试数据表
  21. } catch (Exception e) {
  22. // TODO Auto-generated catch block
  23. close();//关闭数据库连接
  24. e.printStackTrace();
  25. }
  26. return conn;
  27. }
  28. public static void openConnection() {
  29. try {
  30. Class.forName(Drivde);// 加载驱动,连接sqlite的jdbc
  31. conn = DriverManager.getConnection(DATABASE_URL);
  32. } catch (ClassNotFoundException e) {
  33. e.printStackTrace();
  34. } catch (SQLException e) {
  35. e.printStackTrace();
  36. // 如果连接失败,尝试重连
  37. reconnect();
  38. }
  39. }
  40. private static void reconnect() {
  41. try {
  42. // 关闭旧连接
  43. if (conn != null && !conn.isClosed()) {
  44. conn.close();
  45. }
  46. // 重新建立连接
  47. conn = DriverManager.getConnection(DATABASE_URL);
  48. } catch (SQLException e) {
  49. e.printStackTrace();
  50. // 如果重连失败,可以进一步处理异常,比如记录日志、通知管理员等
  51. }
  52. }
  53. public static void create_bw_record() throws SQLException {
  54. Statement statement=conn.createStatement(); //创建连接对象,是Java的一个操作数据库的重要接口
  55. //设备结构数据库
  56. String sqlEquipment = "CREATE TABLE if not exists bw_record("
  57. + "id INTEGER PRIMARY KEY AUTOINCREMENT,gw VARCHAR(20),gy VARCHAR(20),message_type VARCHAR(20),sn VARCHAR(48),bw VARCHAR(1000),record_time DATETIME,"
  58. + "info_01 VARCHAR(200),info_02 VARCHAR(200),info_03 VARCHAR(200))";
  59. // statement.executeUpdate("drop table if exists bw_record");//判断是否有表tables的存在。有则删除
  60. statement.executeUpdate(sqlEquipment);
  61. // 创建 提交记录表
  62. String submitRecord = "CREATE TABLE if not exists submit_record(\n" +
  63. " id INTEGER PRIMARY KEY AUTOINCREMENT, -- 自增ID\n" +
  64. " oprno VARCHAR(20), -- 工位号 \n" +
  65. " sn VARCHAR(48), -- 二维码\n" +
  66. " bw VARCHAR(1000), -- 报文 \n" +
  67. " record_time DATETIME, -- 记录时间\n" +
  68. " state CHAR(1) -- 状态(0 ->未提交, 1 ->已提交)\n" +
  69. ")";
  70. statement.executeUpdate(submitRecord);
  71. statement.close();
  72. }
  73. //插入数据
  74. public static boolean insertData(String gw, String gy, String bw, String message_type, String sn) {
  75. boolean ret = false;
  76. String record_time = DateLocalUtils.getCurrentTime();
  77. try {
  78. // 确保连接已经打开
  79. if (JdbcUtils.conn == null || JdbcUtils.conn.isClosed()) {
  80. JdbcUtils.openConnection();
  81. }
  82. //创建连接对象,是Java的一个操作数据库的重要接口
  83. Statement statement=conn.createStatement();
  84. statement.executeUpdate("INSERT INTO bw_record (gw,gy,bw,record_time,message_type,sn) VALUES"
  85. + " ('"+gw+"', '"+gy+"', '"+bw+"', '"+record_time+"','"+message_type+"','"+sn+"')");//向数据库中插入数据
  86. statement.close();
  87. ret = true;
  88. } catch (SQLException e) {
  89. // TODO Auto-generated catch block
  90. //e.printStackTrace();
  91. ret = false;
  92. }
  93. return ret;
  94. }
  95. // 向 submit_record表 插入提交记录数据
  96. public static boolean insertSubmitRecord(String oprno, String sn, String bw){
  97. boolean ret = false;
  98. String record_time = DateLocalUtils.getCurrentTime();
  99. try {
  100. // 确保连接已经打开
  101. if (JdbcUtils.conn == null || JdbcUtils.conn.isClosed()) {
  102. JdbcUtils.openConnection();
  103. }
  104. Statement statement=conn.createStatement();
  105. String insertSQL = "INSERT INTO submit_record (oprno, sn, bw, record_time, state)" +
  106. "VALUES('" + oprno + "', '" + sn + "', '" + bw + "', '" + record_time + "', '0')";
  107. statement.executeUpdate(insertSQL);
  108. statement.close();
  109. ret = true;
  110. log.info("向submit_record表插入数据成功: {}", insertSQL);
  111. } catch (SQLException e) {
  112. ret = false;
  113. log.info("向submit_record表插入数据失败");
  114. }
  115. return ret;
  116. }
  117. public static void close(){
  118. try {
  119. if(conn!=null) {
  120. conn.close();
  121. }
  122. } catch (SQLException e) {
  123. e.printStackTrace();
  124. }
  125. }
  126. }