用连接池操作ORACLE中任意一张表

本文介绍了数据库连接池的重要性和工作原理,重点讲解了Druid连接池的使用方法,包括配置文件设置、测试类的创建、连接获取、数据操作(更新、查询、删除)等,并提供了完整示例代码,帮助读者快速掌握Druid在实际项目中的应用。
摘要由CSDN通过智能技术生成

目录

1.连接池介绍

2.druid

1.将这个jar包导入项目,再建一个配置文件,内容如下:

2.建一个测试类,读取配置文件

3.获取连接池连接

4.更新任意一张表

5.查询任意一张表

6.删除

7.测试

8.检查数据


1.连接池介绍

为什么需要连接池呢?


Java程序操作数据库,必须获得一个连接Connection

实际操作中,我们要先获得连接,使用完成后还有关闭连接。这两个操作都比较耗时。

思考:那有没有什么比较方便不耗时的方法呢?当我们要用的时候只需要调用一下就ok,用完了再还回去。这样岂不是免去了【获得、关闭连接】节省了很多时间?那应该怎么实现呢?

连接池,将我们所需要的连接,放入池子里,形成公共连接。且该池子中的连接被调用时,有且只能被一个人使用,当该连接被归还时,即可恢复为公共连接,被别人重新调用。

2.druid

我用的是这个:druid-1.1.22.jar

1.将这个jar包导入项目,再建一个配置文件,内容如下:

url=jdbc:oracle:thin:@localhost:1521:orcl
username=scott
password=a
initialSize=10
maxActive=20
maxWait=1000

initialSize为最小连接数

maxAction为最大连接数

maxWait为最长等待时间

2.建一个测试类,读取配置文件

用static框住,这样一开始就能自动·读取文件了

    private static DataSource datasourse;
	
	static {
		Properties p=new Properties();
		try {
			p.load(new FileInputStream("src/project_2/druid.properties"));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			datasourse=DruidDataSourceFactory.createDataSource(p);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    }

第二种

    private static DataSource datasourse;
	
	static {
		   try {
	            //读取配置文件
	            InputStream inputStream =test.class.getClassLoader()
                    .getResourceAsStream("druid.properties");
	            //获取Properties对象,加载到该对象中
	            Properties properties = new Properties();
	            //获取配置文件
	            properties.load(inputStream);
	            //创建druid工厂
	            datasourse = DruidDataSourceFactory.createDataSource(properties);
	        } catch (Exception e) {
	            e.printStackTrace();
	        }
    }

3.获取连接池连接

调用这个方法就能获取连接了

public static Connection getconnection() throws SQLException {
		return datasourse.getConnection();
		
	}

4.更新任意一张表

public static int update(String sql,Object...args) throws SQLException {
		Connection conn=null;
		PreparedStatement pstmt=null;
		conn=getconnection();//获取连接
		pstmt=conn.prepareStatement(sql);
		
		ParameterMetaData p=pstmt.getParameterMetaData();
		//获取占位符
		int count=p.getParameterCount();
		//赋值
		for(int i=0;i<count;i++) {
			pstmt.setObject(i+1,args[i]);
		}
		int num=pstmt.executeUpdate();
		conn.close();
		pstmt.close();
		return num;
	}

5.查询任意一张表

public static void select(String sql,Object...args) throws SQLException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException{

		Connection conn=getconnection();
		PreparedStatement pstmt=conn.prepareStatement(sql);
		ParameterMetaData ptmd=pstmt.getParameterMetaData();
		int count=ptmd.getParameterCount();
		for(int i=0;i<count;i++) {
			pstmt.setObject(i+1, args[i]);
		}
		ResultSet rs=pstmt.executeQuery();
		ResultSetMetaData rsmd=rs.getMetaData();
		int col=rsmd.getColumnCount();
		//System.out.println("列数"+col);
		String []name=new String[col];
		for(int i=0;i<col;i++) {
			name[i]=rsmd.getColumnName(i+1);
		}
		int sum=0;
		while(rs.next()) {
			for(int i=0;i<col;i++) {
				Object value=rs.getObject(name[i]);
				System.out.print(value+"\t");
			}
			System.out.println();
			sum++;
		}
		System.out.println("一共查到"+sum+"条数据");
		conn.close();
		pstmt.close();
		rs.close();
	}

6.删除

public static int delete(String sql,Object...args) throws SQLException {
		Connection conn=getconnection();
		PreparedStatement pstmt=conn.prepareStatement(sql);
		ParameterMetaData ptmd=pstmt.getParameterMetaData();
		int count=ptmd.getParameterCount();
		for(int i=0;i<count;i++) {
			pstmt.setObject(i+1, args[i]);
		}
		int result=pstmt.executeUpdate();
		return result;
	}

7.测试

public static void main(String[] args) throws SQLException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
		
		int sum=update("update stu set sage=? where sid=?",60,1);
		System.out.println("成功修改"+sum+"条数据");
		select("select * from stu where sid=?",1);
		int sum1=delete("delete from stu where sid=?",1);
		System.out.println("成功删除"+sum+"条数据");
	}

8.检查数据

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值