说起写这篇文章,是因为前几天工作的时候老大突然给我一个任务,让我把从EXCEL里读取数据,然后把数据导进一个数据库里。
我想,要用Hibernate弄吗?Hibernate还要写POJO类,算了……
额,那用纯粹的JDBC,额那不会很麻烦吗……
就这样纠结了一下,我决定用JDBC来弄,在2个小时内把数据导进数据库,有点紧迫感。
最后,我当然是成功完成了。现在说一下怎么快速构建一个JDBC的开发环境吧。
其实你需要的是一个Jar包,这个Jar包帮你做好了数据库的连接,你只需要修改数据库的配置文件里的数据库连接信息即可。
在这儿Jar包里有update和query方法,可以直接往数据库里插入数据。
下面贴上代码:
1、信息配置类
在这里读取配置文件的信息。
代码语言:javascript复制 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:
代码语言:javascript复制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 工具类
代码语言:javascript复制 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 }
工具类代码里只有很简单的几个方法,还需要继续完善。