import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.ArrayList; import java.util.List; import java.util.Properties; public class DAOHelper { /** * * * @param args */ public static void main(String []args) { DAOHelper de=new DAOHelper(); String sql="select * from users"; List<Object[]> list=de.queryList(sql, null); for(int i=0;i<list.size();i++) { Object []obj=list.get(i); System.out.println(obj[1].toString()+" "+obj[2].toString()); } } // oracle连接属性设置 private static String driver; private static String url; private static String user; private static String passwd; //连接类和接口 Connection ct; PreparedStatement ps; ResultSet rs; // 读取属性文件初始化数据库连接变量 static { Properties pp=new Properties(); InputStream fis = DAOHelper.class.getClassLoader().getResourceAsStream("derby.properties"); try { pp.load(fis); driver=pp.getProperty("driver"); url=pp.getProperty("url"); user=pp.getProperty("username"); passwd=pp.getProperty("password"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(pp!=null) pp.clear(); try { if(fis!=null) fis.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public DAOHelper() { try { Class.forName(driver); ct=DriverManager.getConnection(url,user,passwd); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public int Update(String sql,String []paras) { int count=0; try { ps=ct.prepareStatement(sql); // 注入参数 this.setParameters(paras); // 获得更新数据行数。 count=ps.executeUpdate() ; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ this.close(); } return count; } /** * @param sql * @param paras 没有注入参数可为null或空串。 * @return 返回一个ResultSet结果集。 */ public ResultSet query(String sql,String[] paras) { try { ps=ct.prepareStatement(sql); this.setParameters(paras); rs=ps.executeQuery(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ //不能关。 } return rs; } /** * @param sql * @param paras 没有注入参数可为null或空串。 * @return 返回一个装有对象数组的List。 */ public List queryList(String sql,String []paras) { List<Object[]> list=new ArrayList<Object[]>(); try { ps=ct.prepareStatement(sql); this.setParameters(paras); rs=ps.executeQuery(); ResultSetMetaData rsmd=(ResultSetMetaData) rs.getMetaData(); int count=rsmd.getColumnCount(); // 将查询结果放入对象数组中。 while(rs.next()) { int rows= rs.getRow(); Object obj[]=new Object[count]; for(int j=0;j<count;j++) { obj[j]=rs.getString(j+1); } list.add(obj); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ this.close(); } return list;} public void close() { try { if(rs!=null) rs.close(); if(ps!=null) ps.close(); if(ct!=null) ct.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private void setParameters(String[] paras) throws SQLException { if(paras!=null && !paras.equals("")) { for(int i=0;i<paras.length;i++) { ps.setString(i+1, paras[i]); } } }}
属性文件
sql.properties
username=sa password=bbc223344 url=jdbc\:sqlserver\://192.168.1.109\:142;databaseName\=QqDB driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
derby.properties
username=classiccars
password=classiccars
url=jdbc\:derby\://localhost\:1527/myeclipse
driver=org.apache.derby.jdbc.ClientDriver
mysql.properties
username=root
password=1234
url=jdbc\:mysql\://192.168.1.114\:3306/test
driver=com.mysql.jdbc.Driver
oracle.properties
username=scott
password=1234
url=jdbc\:oracle\:thin\:@192.168.1.114\:1521\:oracle1
driver=oracle.jdbc.driver.OracleDriver