求大佬解释一下这段代码的意思,前半部分是链接数据库的,如果链接异常就打印Can't load Driver我能理解,我不理解的是后半部分的public static int runUpdate(String sql) throws SQLException里面的内容
public class DBUtil {
private static String driver = ("com.mysql.cj.jdbc.Driver");
private static String URL = "jdbc:mysql://localhost:3306/caipiao?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT";
private static Connection con = null;
private static Statement smt = null;
private static ResultSet rs = null;
private static Connection createConnection() {
try {
Class.forName(driver);
return DriverManager.getConnection(URL, "root", "root");
} catch (SQLException e) {
System.out.println(e.getMessage());
e.printStackTrace();
} catch (java.lang.ClassNotFoundException e) {
System.out.println("Can't load Driver");
}
return null;
}
public static int runUpdate(String sql) throws SQLException {
int count = 0;
if (con == null) {
con = createConnection();
}
if (smt == null) {
smt = con.createStatement();
}
count = smt.executeUpdate(sql);
if (smt != null) {
smt.close();
smt = null;
}
if (con != null) {
con.close();
con = null;
}
return count;
}
public static int runUpdate(String sql) throws SQLException {
int count = 0;
if (con == null) {
//如果con没有初始化,那么调用函数初始化一下
//如果con已经初始化完毕,那么直接使用已经建立的连接,不重新初始化
con = createConnection();
}
if (smt == null) {
//同上,如果smt没有初始化,从con中获取对象
smt = con.createStatement();
}
count = smt.executeUpdate(sql);//执行sql语句
//count返回的是受影响的行数
if (smt != null) {//关闭连接
smt.close();
smt = null;
}
if (con != null) {//关闭连接
con.close();
con = null;
}
return count;
}
这个就是执行你传入的sql。
如果链接和statement为空先去创建,然后执行sql,返回SQL影响行数,最后关闭相关链接
//获取连接
if (con == null) {
con = createConnection();
}
if (smt == null) {
smt = con.createStatement();
}
//执行更新sql语句
count = smt.executeUpdate(sql);
//关闭连接
if (smt != null) {
smt.close();
smt = null;
}
if (con != null) {
con.close();
con = null;
}
这段代码主要用来连接数据库和执行数据库的更新操作(例如 INSERT、UPDATE、DELETE 等)。