网上好像都说的是写不写 getClassLoader(),但我无论要不要这个方法都初始化不了。经过好几天折腾,发现与之无关,应该是:
具体代码如下(可以拷贝了试试,我用的是mysql 8.0.26):
db.properties:
driver= com.mysql.cj.jdbc.Driver url = jdbc:mysql://localhost:3306/myfirst?useUnicode=true&characterEncoding=UTF-8&useSSL=true&serverTimezone=UTC username = root password = *****
JdbcUtils:
package JDBC; import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.Properties; public class JdbcUtils { private static String driver = null; private static String url = null; private static String username = null; private static String password = null; static { try { InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties"); Properties properties = new Properties(); properties.load(in); driver = properties.getProperty("driver"); url = properties.getProperty("url"); username = properties.getProperty("username"); password = properties.getProperty("password"); Class.forName(driver); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } } //获取连接 public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url,username,password); } //释放连接资源 public static void release(Connection conn, Statement st, ResultSet rs){ if(rs != null){ try { rs.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if(st != null){ try { st.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if(conn != null){ try { conn.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } } }
Testdemo2:
package JDBC; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Testdemo2 { public static void main(String[] args) { Connection conn = null; Statement st = null; ResultSet rs = null; try { conn = JdbcUtils.getConnection();//获取数据库连接 st = conn.createStatement();//获取SQL的连接对象 String sql = "select * from student"; rs = st.executeQuery(sql); while (rs.next()){ System.out.println(rs.getObject("id")); System.out.println(rs.getObject("name")); System.out.println(rs.getObject("age")); System.out.println(rs.getObject("email")); } } catch (SQLException throwables) { throwables.printStackTrace(); }finally { JdbcUtils.release(conn,st,rs); } } }