JDBC工具类
建立一个文件名为jdbc.properties,放在src目录下,文件内容如下(也可用Properties类load方法写入):
#\u914D\u7F6E\u6587\u4EF6\u83B7\u53D6Connection #Wed Nov 10 16:54:59 CST 2021 password=数据库密码 driver=com.mysql.jdbc.Driver user=用户名 url=jdbc\:mysql\://ip地址\:数据库端口号/数据库名
工具类代码:
import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.net.URL; import java.sql.*; import java.util.Properties; public class JDBCUtils { private static String url; private static String user; private static String password; private static String driver; /** * 文件的读取,读取配置文件的值 */ static{ Properties prop = new Properties(); try { //获取src路径下的文件方式-->ClassLoader 类加载器 ClassLoader classLoader = JDBCUtils.class.getClassLoader(); URL res = classLoader.getResource("jdbc.properties"); String path = res.getPath(); //System.out.println(path); prop.load(new FileReader(path)); user = prop.getProperty("user"); url = prop.getProperty("url"); password = prop.getProperty("password"); //Class.forName(prop.getProperty("driver")); mysql5后已无需手动注册 }catch(IOException e){ e.printStackTrace(); } } /* * 用于写入配置文件 * @param args public static void main(String[] args) throws IOException { FileWriter fos = new FileWriter("配置文件路径"); Properties prop = new Properties(); prop.setProperty("url","jdbc:mysql://ip地址:端口号/数据库名"); prop.setProperty("user","用户名"); prop.setProperty("password","数据库密码"); prop.setProperty("driver","com.mysql.jdbc.Driver"); prop.store(fos,"配置文件获取Connection");fos.close(); } */ /** * 获取链接 * @return 连接对象 */ public static Connection getConnection() throws SQLException{ return DriverManager.getConnection(url,user,password); } /** * 释放资源 * @param stm * @param conn */ public static void close(Statement stm,Connection conn){ if(stm != null){ try{ stm.close(); }catch(SQLException e){ e.printStackTrace(); } } if(conn != null){ try{ conn.close(); }catch(SQLException e){ e.printStackTrace(); } } } /** * 释放资源 * @param stm * @param conn * @param result */ public static void close(Statement stm, Connection conn, ResultSet result){ if(result != null){ try{ result.close(); }catch(SQLException e){ e.printStackTrace(); } } if(stm != null){ try{ stm.close(); }catch(SQLException e){ e.printStackTrace(); } } if(conn != null){ try{ conn.close(); }catch(SQLException e){ e.printStackTrace(); } } } /** * 在执行DQL语句有ResultSet的情况下 * 面对多个Statement与多个PreparedStatement对象时,释放资源 * @param conn * @param result * @param stms */ public static void close(Connection conn,ResultSet result,Statement...stms){ if(result != null){ try{ result.close(); }catch(SQLException e){ e.printStackTrace(); } } //释放Statement资源 for(Statement t : stms){ if(t != null){ try{ t.close(); }catch (SQLException e){ e.printStackTrace(); } } } if(conn != null){ try{ conn.close(); }catch (SQLException e){ e.printStackTrace(); } } } /** * 在执行DDL与DML无ResultSet的情况下 * 面对多个Statement对象释放资源 * @param conn * @param stms */ public static void close(Connection conn,Statement...stms){ for(Statement t : stms){ if(t != null){ try{ t.close(); }catch(SQLException e){ e.printStackTrace(); } } if(conn != null){ try{ conn.close(); }catch(SQLException e){ e.printStackTrace(); } } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!