JDBC

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 block
				e.printStackTrace();
				System.out.println("驱动加载失败...");
			}
		 }
		 private void getConnection(){
			 try {
				conn=DriverManager.getConnection(url,username,password);
				System.out.println("数据库建立连接...");
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.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 block
				e.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 block
				e.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 block
				e.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 block
				e.printStackTrace();
				try {
					conn.rollback();
				} catch (SQLException e1) {
					// TODO Auto-generated catch block
					e1.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 block
					e.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 block
				e.printStackTrace();
			}
		
		 }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值