2024.11.15

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;
}
}
posted @   我也不想的  阅读(2)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示