package com.example.xxxmes.utils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
// 数据库工具类,连接数据库并执行查询操作
public class JDBCUtils {
private static String driver = "com.mysql.jdbc.Driver"; // 5.1.2d版本驱动类名
private static String dbName = "mydatabase"; // 数据库名称
private static String user = "root"; // 这里需要替换为实际的用户名
private static String password = "123456"; // 这里需要替换为实际的密码
public static Connection getConn() {
Connection connection = null;
int maxRetries = 3; // 设置最大重试次数
int retryCount = 0;
long connectionTimeout = 5000; // 设置连接超时时间为5秒
while (retryCount < maxRetries && connection == null) {
try {
Class.forName(driver);
String ip = "192.168.200.173";
System.out.println("正在尝试第 " + (retryCount + 1) + " 次建立数据库连接...");
long startTime = System.currentTimeMillis();
connection = DriverManager.getConnection("jdbc:mysql://" + ip + ":3306/" + dbName , user, password);
long endTime = System.currentTimeMillis();
System.out.println("数据库连接已成功建立,耗时 " + (endTime - startTime) + " 毫秒。");
// 验证连接的自动提交模式是否正确
boolean autoCommit = connection.getAutoCommit();
boolean expectedAutoCommit = true; // 假设应用要求自动提交模式为开启
if (autoCommit!= expectedAutoCommit) {
System.out.println("数据库连接的自动提交模式为 " + autoCommit + ", 与预期的 " + expectedAutoCommit + " 不一致。");
}
// 获取并验证数据库连接的字符集编码
String actualCharset = getCharacterEncoding(connection);
String expectedCharset = "utf8"; // 假设应用要求UTF-8字符集
if (!actualCharset.equals(expectedCharset)) {
System.out.println("数据库连接的字符集设置为 " + actualCharset + ", 与预期的 " + expectedCharset + " 不一致。");
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("第 " + (retryCount + 1) + " 次数据库连接建立失败: " + e.getMessage());
if (retryCount < maxRetries - 1) {
System.out.println("将在 " + (retryCount + 1) * 1000 + " 毫秒后进行下一次重试。");
try {
Thread.sleep((retryCount + 1) * 1000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
retryCount++;
}
if (connection == null) {
System.out.println("经过 " + maxRetries + " 次重试后,仍无法建立数据库连接,程序可能无法正常运行。");
}
return connection;
}
private static String getCharacterEncoding(Connection connection) throws SQLException {
String charset = null;
try (Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SHOW VARIABLES LIKE 'character_set_connection'")) {
if (rs.next()) {
charset = rs.getString(2);
}
}
return charset;
}
public static ResultSet executeQuery(String sql) {
Connection conn = getConn();
PreparedStatement stmt = null;
ResultSet rs = null;
try {
stmt = conn.prepareStatement(sql);
rs = stmt.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (stmt!= null) stmt.close();
if (conn!= null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return rs;
}
}
package com.example.xxxmes.entity;
public class Equipment {
private int equipmentId; // 设备ID
private String name; // 设备名称
private String status; // 状态
private String qrCode; // 二维码
public Equipment() {
}
public Equipment(int equipmentId, String name, String status, String qrCode) {
this.equipmentId = equipmentId;
this.name = name;
this.status = status;
this.qrCode = qrCode;
}
public int getEquipmentId() {
return equipmentId;
}
public void setEquipmentId(int equipmentId) {
this.equipmentId = equipmentId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getQrCode() {
return qrCode;
}
public void setQrCode(String qrCode) {
this.qrCode = qrCode;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人