JDBC总结
今天复习了JDBC的内容,古人说温故知新,真的深有体会了。所以决定用自已的话在此记下,如有不对之处,请高手指教。
JDBC连接数据库,采用的是面向接口编程。接口在java.sql和javax.sql包里。
不同的数据库厂商提供不同的驱动jar包,具体的实现方法都在jar包里。连接数据库步骤比较固定,以下示例是连接Oracle
//1,jdbc.properties文件
driverClassName=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@localhost:1521:BDQN username=wjb password=wjb
//2,读取properties文件
package cn.util; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class ConfigManager { //读取jdbc.properties配置文件,单例模式 private static ConfigManager configManager; private static Properties properties; //单例模式必须用private构造方法,不能用public private ConfigManager(){ String configFile = "jdbc.properties"; properties = new Properties(); InputStream is = ConfigManager.class.getClassLoader().getResourceAsStream(configFile); try { properties.load(is); } catch (IOException e) { e.printStackTrace(); } } //提供一个入口获取ConfigManager,这个方法可以严格控制实例生成的个数 public static ConfigManager getInstance(){ //如果为空就创建一个自已的构造方法,获取ConfigManager if(configManager == null){ configManager = new ConfigManager(); } return configManager; } //以上只是获取了properties的KEY值,下面这个方法获取对应的value值 public String getString (String key){ return properties.getProperty(key); } }
//3,连接数据库的基类
package cn.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import cn.pojo.Dancer; import cn.util.ConfigManager; public class BaseDao { Connection connection = null; ResultSet rs = null; PreparedStatement pst = null; //连接数据库的方法 public boolean getConnection(){ String driver = ConfigManager.getInstance().getString("driverClassName"); String url = ConfigManager.getInstance().getString("url"); String username = ConfigManager.getInstance().getString("username"); String password = ConfigManager.getInstance().getString("password"); try { Class.forName(driver); connection = DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return true; } //增删改 public int executeUpdate(String sql,Object[] param){ int row = 0; if(this.getConnection()){ try { pst = connection.prepareStatement(sql); for(int i = 0;i<param.length;i++){ pst.setObject(i+1, param[i]); } row = pst.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } return row; } //查询 public ResultSet executeQuery(String sql,Object[] param){ if(this.getConnection()){ try { pst = connection.prepareStatement(sql); for(int i=0;i<param.length;i++){ pst.setObject(i+1, param[i]); } rs = pst.executeQuery(); } catch (SQLException e) { e.printStackTrace(); } } return rs; } }