JDBC

来源:互联网 发布:网络kvm 编辑:程序博客网 时间:2024/06/05 06:55
JDBC:
jdbc是Java数据库连接技术的简称,提供连接各种常用数据库的能力

数据访问层:
DAO
data access object(数据存取对象)
位于业务逻辑和持久化数据之间
实现对持久化数据的访问
dao模式的组成:
1、dao接口
2、dao实现类
3、实体类
4、数据库连接和关闭工具类
public class BaseDao {//驱动名称private final String driverName="oracle.jdbc.driver.OracleDriver";//连接的数据库url,jdbc:oracle:thin:固定写法,@后边是ip地址:,1521是数据库端口号,后边jredu是实例private final String url="jdbc:oracle:thin:@localhost:1521:jredu";private final String username="wl";private final String password="Jredu12345";//连接Connection conn=null;//准备连接数据库参数PreparedStatement ps=null; //结果集ResultSet rs=null; { try {Class.forName(driverName);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("驱动加载失败...");} } private void getConnection(){ try {conn=DriverManager.getConnection(url,username,password);System.out.println("数据库建立连接...");} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("数据库连接失败...");} } /*  * 查询没有任何条件  */ protected ResultSet excuteQuery(String sql){ getConnection(); try {ps=conn.prepareStatement(sql); rs=ps.executeQuery();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("sql查询出现错误错误...");}  return rs; } //查询一个参数 protected ResultSet excuteQuery(String sql,Object obj){ getConnection(); try {ps=conn.prepareStatement(sql);    ps.setObject(1, obj); rs=ps.executeQuery();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("sql查询出现错误错误...");}  return rs; }  //查询时传递多个参数 protected ResultSet excuteQuery(String sql,Object[] objs){ getConnection(); try {ps=conn.prepareStatement(sql);if(objs!=null){for(int i=0;i<objs.length;i++){ ps.setObject(i+1, objs[i]); }} rs=ps.executeQuery();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("sql查询出现错误错误...");}  return rs; } //增删改操作 protected int excuteUpdate(String sql){return excuteUpdate(sql, null); } protected int excuteUpdate(String sql,Object obj){ Object[] objs=new Object[1]; objs[0]=obj; return excuteUpdate(sql, objs); } protected int excuteUpdate(String sql,Object[] objs){ getConnection(); int ret=-1; try { //手动提交事务conn.setAutoCommit(false);conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);//封装sql语句 ps=conn.prepareStatement(sql); for(int i=0;i<objs.length;i++){ ps.setObject(i+1, objs[i]); } //执行sql语句 ret=ps.executeUpdate(); conn.commit();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();try {conn.rollback();} catch (SQLException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}System.out.println("sql执行出现错误...");}finally{//关闭数据库连接closeStatement();} return ret; } //关闭声明及连接 private void closeStatement(){ try { if(ps!=null){ ps.close(); } if(conn!=null){ conn.close(); }} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} } protected void closeAll(){ try { if(rs!=null){ rs.close(); } if(ps!=null){ ps.close(); } if(conn!=null){ conn.close(); }} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} }}