对于一个JDBC程序的解读

来源:互联网 发布:java dom4j生成xml 编辑:程序博客网 时间:2024/06/04 18:56
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:orcl
username=system

password=openlab

上面这些数据是单独放在一个叫db_oracle.properties的一个配置文件当中的。

这个类是ConnectionUtils。

import java.io.IOException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;//获得连接数据库的连接 并且关闭数据库public class ConnectionUtils {private static String url;private static String driver;private static String username;private static String password;static{//程序装载的时候,只执行一次Properties props = new Properties();try{props.load(ConnectionUtils.class.getClassLoader().getResourceAsStream("配置文件的位置/db_oracle.properties"));}catch(IOException e){e.printStackTrace();}if(props!=null){url = props.getProperty("url");driver = props.getProperty("driver");username = props.getProperty("username");password = props.getProperty("password");try{Class.forName(driver);}catch(ClassNotFoundException e){}}}//获得连接public static Connection openConnection() throws SQLException{return DriverManager.getConnection(url, username, password);}//关闭连接public static void closeConnection(Connection conn){try{if(conn != null){conn.close();}}catch(SQLException e){e.printStackTrace();}}public static void closeStatement(Statement stmt){try{if(stmt != null){stmt.close();}}catch(SQLException e){e.printStackTrace();}}public static void closeResultSet(ResultSet rs){try{if(rs != null){rs.close();}}catch(SQLException e){e.printStackTrace();}}}
ConnectionUtils的作用主要是从配置文件中获得到数据库的连接。是一个工具类。为什么要不连接的相关信息写在配置文件中,而不写在程序中,这也是计算机中常用的一个方法。主要是为了在调试的时候,方便。修改的时候容易。定位错误的时候能够很快定位到。这算是一个技巧吧!

import java.sql.Connection;import java.sql.SQLException;import java.sql.Statement;public class TestBatch {static Connection conn = null;static Statement stmt = null;public static void main(String[] args){batch();}public static void batch(){String sql1 = "insert into student values(200, 'rose', 19, 'F')";String sql2 = "insert into student values(210, 'martha', 25, 'F')";try{    conn = ConnectionUtils.openConnection();conn.setAutoCommit(false);stmt = conn.createStatement();stmt.addBatch(sql1);stmt.addBatch(sql2);int [] result = stmt.executeBatch();//批量执行conn.commit(); for(int i:result){System.out.println(i);}}catch(SQLException e){e.printStackTrace();}finally{ConnectionUtils.closeConnection(conn);ConnectionUtils.closeStatement(stmt);}}}

这个类的主要作用就是对数据库进行操作。

步骤就是:实现数据库连接,获得语句对象,执行SQL语句。而这里用到了addBatch方法,这个方法是把SQL语句加入到缓冲区。利用executeBatch()方法,批量执行SQL语句,主要目的是为了提高效率。数据库很多的时间主要花在了I/O上,减少I/O的情况下,得到相应的结果,就能够提高效率。

单独把数据库的连接和资源的关闭写在一个类里边,而不业务逻辑写在另一个类中,这样在调试程序的时候,能够很快定位程序的bug,提高调试效率。








原创粉丝点击