如何快速构建一个JDBC的开发环境
说起写这篇文章,是因为前几天工作的时候老大突然给我一个任务,让我把从EXCEL里读取数据,然后把数据导进一个数据库里。
我想,要用Hibernate弄吗?Hibernate还要写POJO类,算了……
额,那用纯粹的JDBC,额那不会很麻烦吗……
就这样纠结了一下,我决定用JDBC来弄,在2个小时内把数据导进数据库,有点紧迫感。
最后,我当然是成功完成了。现在说一下怎么快速构建一个JDBC的开发环境吧。
其实你需要的是一个Jar包,这个Jar包帮你做好了数据库的连接,你只需要修改数据库的配置文件里的数据库连接信息即可。
在这儿Jar包里有update和query方法,可以直接往数据库里插入数据。
下面贴上代码:
1、信息配置类
在这里读取配置文件的信息。
1 package com.chanshuyi.dbutil; 2 import java.io.IOException; 3 import java.io.InputStream; 4 import java.util.Properties; 5 6 public class ConfigUtil { 7 private static Properties p = new Properties(); 8 //用静态代码块 9 static { 10 try { 11 InputStream in = ClassLoader 12 .getSystemResourceAsStream("dbconfig.properties"); 13 p.load(in); 14 } catch (IOException e) { 15 e.printStackTrace(); 16 } 17 } 18 19 public static String getDriver(){ 20 return p.getProperty("database.driver"); 21 } 22 23 public static String getUrl(){ 24 return p.getProperty("database.url"); 25 } 26 27 public static String getUser(){ 28 return p.getProperty("database.user"); 29 } 30 31 public static String getPwd(){ 32 return p.getProperty("database.pwd"); 33 } 34 }
配置文件dbconfig.properties:
1 database.driver=oracle.jdbc.driver.OracleDriver 2 database.url=jdbc:oracle:thin:@localhost:1521:chanshuyi 3 database.user=username 4 database.pwd=psw
dbconfig.properties 文件要放在src目录下
2、编写 JDBCUtil.java 工具类
1 package com.chanshuyi.dbutil; 2 import java.sql.Connection; 3 import java.sql.DriverManager; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 8 /** 9 * <P>获取Jdbc连接,执行修改语句,执行查询语句,释放资源</P> 10 * <P>JdbcUtil加载时自动获取连接<P> 11 * @author Administrator 12 * 13 */ 14 public class JDBCUtil { 15 16 /** 公用数据库连接 **/ 17 private static Connection conn; 18 19 static { 20 try { 21 //加载驱动 22 Class.forName(ConfigUtil.getDriver()); 23 conn = openConnection(); 24 } catch (ClassNotFoundException e) { 25 e.printStackTrace(); 26 } 27 } 28 29 /** 30 * 打开连接 31 * @return 32 */ 33 private static Connection openConnection(){ 34 Connection conn = null; 35 String url = ConfigUtil.getUrl();//获取URL 36 String user = ConfigUtil.getUser();//获取登录名 37 String pwd = ConfigUtil.getPwd();//获取登录密码 38 try { 39 //连接数据库 40 conn = DriverManager.getConnection(url,user,pwd); 41 } catch (SQLException e) { 42 e.printStackTrace(); 43 } 44 return conn; 45 } 46 47 /** 48 * 更新数据 49 * @param sql SQL语句 50 * @param params SQL语句的参数列表 51 * @return 影响行数 52 * @throws SQLException 53 */ 54 public static int update(String sql, String[] params) throws SQLException{ 55 56 //如果连接关闭则重新获取一个新的连接 57 if(conn == null || conn.isClosed()) 58 { 59 conn = openConnection(); 60 } 61 62 int count = -1; 63 try { 64 PreparedStatement pstmt = conn.prepareStatement(sql); 65 for(int i = 0; i < params.length; i++) 66 { 67 pstmt.setString(i+1, params[i]); 68 } 69 count = pstmt.executeUpdate(); 70 } catch (SQLException e) { 71 e.printStackTrace(); 72 System.out.println("执行更新出错了"); 73 } 74 75 return count; 76 } 77 78 /** 79 * 查询 80 * @param sql SQL语句 81 * @param params SQL语句参数列表 82 * @return 83 * @throws SQLException 84 */ 85 public static ResultSet query(String sql, String[] params) throws SQLException 86 { 87 //如果连接关闭则重新获取一个新的连接 88 if(conn == null || conn.isClosed()) 89 { 90 conn = openConnection(); 91 } 92 93 ResultSet rs = null; 94 try{ 95 PreparedStatement pstmt = conn.prepareStatement(sql); 96 for(int i = 0; i < params.length; i++) 97 { 98 //全部用setString不知道会不会出错 99 pstmt.setString(i+1, params[i]); 100 } 101 rs = pstmt.executeQuery(); 102 } catch (SQLException e) { 103 e.printStackTrace(); 104 System.out.println("查询出错了"); 105 } 106 107 return rs; 108 } 109 110 /** 111 * 关闭数据库连接 112 */ 113 public static void close() 114 { 115 if(conn == null) 116 { 117 return; 118 } 119 else 120 { 121 try 122 { 123 conn.close(); 124 } 125 catch(Exception e) 126 { 127 e.printStackTrace(); 128 } 129 } 130 } 131 132 public static Connection getConn() { 133 return conn; 134 } 135 136 public static void setConn(Connection conn) { 137 JDBCUtil.conn = conn; 138 } 139 }
工具类代码里只有很简单的几个方法,还需要继续完善。

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端