如何快速构建一个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 }

工具类代码里只有很简单的几个方法,还需要继续完善。

posted @ 2014-07-24 20:15  陈树义  阅读(289)  评论(0编辑  收藏  举报