JdbcUtils.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403
  1. package com.mes.util;
  2. import com.mes.ui.YgslResp;
  3. import com.mes.ygsl.YgslConfig;
  4. import java.sql.*;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. public class JdbcUtils {
  8. //通过上面的工具就可以获取到properties文件中的键值从而可以加载驱动 获取链接 从而 可以增删改查
  9. public static Connection conn = null;
  10. public static String Drivde="org.sqlite.JDBC";
  11. public static String DATABASE_URL="jdbc:sqlite:mes_db.db";
  12. public static Connection getConn(){
  13. try {
  14. Class.forName(Drivde);// 加载驱动,连接sqlite的jdbc
  15. conn = DriverManager.getConnection(DATABASE_URL);//连接数据库zhou.db,不存在则创建
  16. System.out.println("连接到SQLite数据库成功!");
  17. create_bw_record();//初始化结构表
  18. create_bw_tightening();//初始化
  19. create_ygsl_config();//初始化扭力枪配置表
  20. } catch (Exception e) {
  21. // TODO Auto-generated catch block
  22. close();//关闭数据库连接
  23. e.printStackTrace();
  24. conn = null;
  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 closeConnection() {
  54. try {
  55. if (conn != null && !conn.isClosed()) {
  56. conn.close();
  57. }
  58. } catch (SQLException e) {
  59. e.printStackTrace();
  60. }
  61. }
  62. public static void create_bw_record() throws SQLException {
  63. Statement statement=conn.createStatement(); //创建连接对象,是Java的一个操作数据库的重要接口
  64. //设备结构数据库
  65. String sqlEquipment = "CREATE TABLE if not exists bw_record("
  66. + "id INTEGER PRIMARY KEY AUTOINCREMENT,gw VARCHAR(20),gy VARCHAR(20),message_type VARCHAR(20),sn VARCHAR(48),bw VARCHAR(1000),record_time DATETIME,"
  67. + "info_01 VARCHAR(200),info_02 VARCHAR(200),info_03 VARCHAR(200))";
  68. // statement.executeUpdate("drop table if exists bw_record");//判断是否有表tables的存在。有则删除
  69. statement.executeUpdate(sqlEquipment);
  70. System.out.println("表创建成功!");
  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. if(conn==null) {
  78. ret = false;
  79. }else {
  80. try {
  81. //创建连接对象,是Java的一个操作数据库的重要接口
  82. Statement statement=conn.createStatement();
  83. statement.executeUpdate("INSERT INTO bw_record (gw,gy,bw,record_time,message_type,sn) VALUES"
  84. + " ('"+gw+"', '"+gy+"', '"+bw+"', '"+record_time+"','"+message_type+"','"+sn+"')");//向数据库中插入数据
  85. statement.close();
  86. ret = true;
  87. } catch (SQLException e) {
  88. // TODO Auto-generated catch block
  89. //e.printStackTrace();
  90. ret = false;
  91. }
  92. }
  93. return ret;
  94. }
  95. public static void close(){
  96. System.out.println("SQLite数据库连接关闭!");
  97. try {
  98. if(conn!=null) {
  99. conn.close();
  100. }
  101. } catch (SQLException e) {
  102. e.printStackTrace();
  103. }
  104. }
  105. public static void create_bw_tightening() throws SQLException {
  106. Statement statement=conn.createStatement(); //创建连接对象,是Java的一个操作数据库的重要接口
  107. //设备结构数据库
  108. String sqlEquipment = "CREATE TABLE if not exists bw_tightening("
  109. + "id INTEGER PRIMARY KEY AUTOINCREMENT,gw VARCHAR(20),line_sn VARCHAR(20),sn VARCHAR(48),"
  110. + "tighteningStatus VARCHAR(10),torqueStatus VARCHAR(10),angleStatus VARCHAR(10),torqueMin VARCHAR(30),torqueMax VARCHAR(30),torqueFinal VARCHAR(30),torque VARCHAR(30),"
  111. + "angleMin VARCHAR(30),angleMax VARCHAR(30),angleFinal VARCHAR(30),angle VARCHAR(30),tighteningID VARCHAR(30),jobID VARCHAR(30),serialNumber VARCHAR(10),pos VARCHAR(5)," +
  112. "sync int(10) NULL DEFAULT 0,record_time DATETIME,ucode VARCHAR(50))"; // 0=未同步到MES 1=已同步到MES
  113. //statement.executeUpdate("drop table if exists bw_prod");//判断是否有表tables的存在。有则删除
  114. statement.executeUpdate(sqlEquipment);
  115. System.out.println("表prod创建成功!");
  116. statement.close();
  117. }
  118. //插入数据
  119. public static boolean insertTighteningData(String gw, String lineSn, String sn, String tighteningStatus, String torqueStatus, String angleStatus, String torqueMin, String torqueMax, String torqueFinal, String torque,
  120. String angleMin,String angleMax,String angleFinal,String angle,String tighteningID,String jobID,String serialNumber,String pos,String ucode) {
  121. boolean ret = false;
  122. try{
  123. // 确保连接已经打开
  124. if (conn == null || conn.isClosed()) {
  125. openConnection();
  126. }
  127. String record_time = DateLocalUtils.getCurrentTime();
  128. Statement statement=conn.createStatement();
  129. statement.executeUpdate("INSERT INTO bw_tightening (gw,line_sn,sn,tighteningStatus,torqueStatus,angleStatus,torqueMin,torqueMax,torqueFinal,torque,angleMin,angleMax,angleFinal,angle,tighteningID,jobID,serialNumber,pos,ucode,record_time) VALUES"
  130. + " ('"+gw+"', '"+lineSn+"', '"+sn+"', '"+tighteningStatus+"', '"+torqueStatus+"', '"+angleStatus+"', '"+torqueMin+"', '"+torqueMax+"', '"+torqueFinal+"', '"+torque+"','"+angleMin+"','"+angleMax+"','"+angleFinal+"','"+angle+"','"+tighteningID+"','"+jobID+"','"+serialNumber+"','"+pos+"','"+ucode+"','"+record_time+"')");//向数据库中插入数据
  131. statement.close();
  132. ret = true;
  133. }catch (Exception e){
  134. e.printStackTrace();
  135. ret = false;
  136. }
  137. return ret;
  138. }
  139. //查询数据是否存在
  140. public static boolean checkTighteningById(String tighteningId,String pos,String jobID) {
  141. boolean ret = false;
  142. try{
  143. // 确保连接已经打开
  144. if (conn == null || conn.isClosed()) {
  145. openConnection();
  146. }
  147. Statement statement=conn.createStatement();
  148. ResultSet retset = statement.executeQuery("SELECT count(*) FROM bw_tightening WHERE tighteningID = '"+tighteningId+"' AND pos = '"+pos+"' AND jobID = '"+jobID+"' LIMIT 1");//向数据库中插入数据
  149. Integer count = 0;
  150. while (retset.next()) {
  151. count = retset.getInt(1);
  152. }
  153. statement.close();
  154. if(count > 0){
  155. ret = true;
  156. }
  157. }catch (Exception e){
  158. e.printStackTrace();
  159. ret = false;
  160. }
  161. return ret;
  162. }
  163. // 修改已同步
  164. public static void updateSync(Integer id,Integer sync){
  165. try{
  166. // 确保连接已经打开
  167. if (conn == null || conn.isClosed()) {
  168. openConnection();
  169. }
  170. Statement statement=conn.createStatement(); //创建连接对象,是Java的一个操作数据库的重要接口
  171. statement.executeUpdate("update bw_tightening set sync = "+sync + " where id = "+id);
  172. statement.close();
  173. }catch (Exception e){
  174. e.printStackTrace();
  175. }
  176. }
  177. public static List<YgslResp> getYgsl() {
  178. List<YgslResp> prods = new ArrayList<>();
  179. try{
  180. // 确保连接已经打开
  181. if (conn == null || conn.isClosed()) {
  182. openConnection();
  183. }
  184. //SQL语句
  185. String sql = "select id,gw,line_sn,sn,tighteningStatus,torqueStatus,angleStatus,torqueMin,torqueMax,torqueFinal,torque,angleMin,angleMax,angleFinal,angle,tighteningID,pos,serialNumber,record_time,ucode from bw_tightening where sync = 0 order by id asc limit 100";
  186. Statement statement=conn.createStatement(); //创建连接对象,是Java的一个操作数据库的重要接口
  187. ResultSet ret = statement.executeQuery(sql);
  188. while (ret.next()) {
  189. YgslResp prodReq = new YgslResp();
  190. prodReq.setId(ret.getInt(1));
  191. prodReq.setOprno(ret.getString(2));
  192. prodReq.setLineSn(ret.getString(3));
  193. prodReq.setSn(ret.getString(4));
  194. prodReq.setTighteningStatus(ret.getString(5));
  195. prodReq.setTorqueStatus(ret.getString(6));
  196. prodReq.setAngleStatus(ret.getString(7));
  197. prodReq.setTorqueMin(ret.getString(8));
  198. prodReq.setTorqueMax(ret.getString(9));
  199. prodReq.setTorqueFinal(ret.getString(10));
  200. prodReq.setTorque(ret.getString(11));
  201. prodReq.setAngleMin(ret.getString(12));
  202. prodReq.setAngleMax(ret.getString(13));
  203. prodReq.setAngleFinal(ret.getString(14));
  204. prodReq.setAngle(ret.getString(15));
  205. prodReq.setTighteningId(ret.getString(16));
  206. prodReq.setPos(ret.getString(17));
  207. prodReq.setSerialNumber(ret.getString(18));
  208. prodReq.setTighteningDate(ret.getString(19));
  209. prodReq.setCreateBy(ret.getString(20));
  210. prods.add(prodReq);
  211. }
  212. statement.close();
  213. }catch (Exception e){
  214. e.printStackTrace();
  215. }
  216. return prods;
  217. }
  218. public static void create_ygsl_config() throws SQLException {
  219. Statement statement = conn.createStatement();
  220. String sql = "CREATE TABLE if not exists ygsl_config("
  221. + "id INTEGER PRIMARY KEY AUTOINCREMENT,"
  222. + "gun_index INTEGER,"
  223. + "gun_name VARCHAR(20),"
  224. + "ip_address VARCHAR(50),"
  225. + "port INTEGER,"
  226. + "task_count INTEGER,"
  227. + "enabled INTEGER DEFAULT 1,"
  228. + "auto_submit INTEGER DEFAULT 1,"
  229. + "create_time DATETIME,"
  230. + "update_time DATETIME)";
  231. statement.executeUpdate(sql);
  232. System.out.println("扭力枪配置表创建成功!");
  233. ResultSet rs = statement.executeQuery("SELECT count(*) FROM ygsl_config");
  234. int count = 0;
  235. if (rs.next()) {
  236. count = rs.getInt(1);
  237. }
  238. statement.close();
  239. if (count == 0) {
  240. initDefaultYgslConfig();
  241. }
  242. }
  243. private static void initDefaultYgslConfig() throws SQLException {
  244. Statement statement = conn.createStatement();
  245. String now = DateLocalUtils.getCurrentTime();
  246. statement.executeUpdate("INSERT INTO ygsl_config (gun_index, gun_name, ip_address, port, task_count, enabled, auto_submit, create_time, update_time) VALUES "
  247. + "(1, 'M5', '192.168.5.100', 4545, 12, 1, 1, '" + now + "', '" + now + "')");
  248. statement.executeUpdate("INSERT INTO ygsl_config (gun_index, gun_name, ip_address, port, task_count, enabled, auto_submit, create_time, update_time) VALUES "
  249. + "(2, 'M8', '192.168.5.101', 4545, 1, 1, 1, '" + now + "', '" + now + "')");
  250. System.out.println("默认扭力枪配置初始化完成!");
  251. statement.close();
  252. }
  253. public static List<YgslConfig> getYgslConfigs() {
  254. List<YgslConfig> configs = new ArrayList<>();
  255. try {
  256. if (conn == null || conn.isClosed()) {
  257. openConnection();
  258. }
  259. Statement statement = conn.createStatement();
  260. ResultSet rs = statement.executeQuery("SELECT id, gun_index, gun_name, ip_address, port, task_count, enabled, auto_submit FROM ygsl_config ORDER BY gun_index");
  261. while (rs.next()) {
  262. YgslConfig config = new YgslConfig();
  263. config.setId(rs.getInt("id"));
  264. config.setGunIndex(rs.getInt("gun_index"));
  265. config.setGunName(rs.getString("gun_name"));
  266. config.setIpAddress(rs.getString("ip_address"));
  267. config.setPort(rs.getInt("port"));
  268. config.setTaskCount(rs.getInt("task_count"));
  269. config.setEnabled(rs.getInt("enabled"));
  270. config.setAutoSubmit(rs.getInt("auto_submit"));
  271. configs.add(config);
  272. }
  273. statement.close();
  274. } catch (Exception e) {
  275. e.printStackTrace();
  276. }
  277. return configs;
  278. }
  279. public static List<YgslConfig> getEnabledYgslConfigs() {
  280. List<YgslConfig> configs = new ArrayList<>();
  281. try {
  282. if (conn == null || conn.isClosed()) {
  283. openConnection();
  284. }
  285. Statement statement = conn.createStatement();
  286. ResultSet rs = statement.executeQuery("SELECT id, gun_index, gun_name, ip_address, port, task_count, enabled, auto_submit FROM ygsl_config WHERE enabled = 1 ORDER BY gun_index");
  287. while (rs.next()) {
  288. YgslConfig config = new YgslConfig();
  289. config.setId(rs.getInt("id"));
  290. config.setGunIndex(rs.getInt("gun_index"));
  291. config.setGunName(rs.getString("gun_name"));
  292. config.setIpAddress(rs.getString("ip_address"));
  293. config.setPort(rs.getInt("port"));
  294. config.setTaskCount(rs.getInt("task_count"));
  295. config.setEnabled(rs.getInt("enabled"));
  296. config.setAutoSubmit(rs.getInt("auto_submit"));
  297. configs.add(config);
  298. }
  299. statement.close();
  300. } catch (Exception e) {
  301. e.printStackTrace();
  302. }
  303. return configs;
  304. }
  305. public static boolean updateYgslConfig(YgslConfig config) {
  306. boolean ret = false;
  307. try {
  308. if (conn == null || conn.isClosed()) {
  309. openConnection();
  310. }
  311. String now = DateLocalUtils.getCurrentTime();
  312. Statement statement = conn.createStatement();
  313. String sql = "UPDATE ygsl_config SET gun_index = " + config.getGunIndex() + ", "
  314. + "gun_name = '" + config.getGunName() + "', "
  315. + "ip_address = '" + config.getIpAddress() + "', "
  316. + "port = " + config.getPort() + ", "
  317. + "task_count = " + config.getTaskCount() + ", "
  318. + "enabled = " + config.getEnabled() + ", "
  319. + "auto_submit = " + config.getAutoSubmit() + ", "
  320. + "update_time = '" + now + "' "
  321. + "WHERE id = " + config.getId();
  322. System.out.println("执行SQL: " + sql);
  323. int rowsAffected = statement.executeUpdate(sql);
  324. System.out.println("更新行数: " + rowsAffected);
  325. statement.close();
  326. ret = true;
  327. } catch (Exception e) {
  328. e.printStackTrace();
  329. }
  330. return ret;
  331. }
  332. public static boolean insertYgslConfig(YgslConfig config) {
  333. boolean ret = false;
  334. try {
  335. if (conn == null || conn.isClosed()) {
  336. openConnection();
  337. }
  338. String now = DateLocalUtils.getCurrentTime();
  339. Statement statement = conn.createStatement();
  340. statement.executeUpdate("INSERT INTO ygsl_config (gun_index, gun_name, ip_address, port, task_count, enabled, auto_submit, create_time, update_time) VALUES ("
  341. + config.getGunIndex() + ", '" + config.getGunName() + "', '" + config.getIpAddress() + "', " + config.getPort() + ", " + config.getTaskCount() + ", " + config.getEnabled() + ", " + config.getAutoSubmit() + ", '" + now + "', '" + now + "')");
  342. statement.close();
  343. ret = true;
  344. } catch (Exception e) {
  345. e.printStackTrace();
  346. }
  347. return ret;
  348. }
  349. public static boolean deleteYgslConfig(int id) {
  350. boolean ret = false;
  351. try {
  352. if (conn == null || conn.isClosed()) {
  353. openConnection();
  354. }
  355. Statement statement = conn.createStatement();
  356. statement.executeUpdate("DELETE FROM ygsl_config WHERE id = " + id);
  357. statement.close();
  358. ret = true;
  359. } catch (Exception e) {
  360. e.printStackTrace();
  361. }
  362. return ret;
  363. }
  364. }