(高手)求教一个批处理方法的适当位置

本文探讨了在Java中批量删除数据库用户的不同策略,包括循环调用删除方法、事务管理和资源重复利用等问题,并提出了几种可能的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DBManager.java

public class DBManager {

	// 连接数据库
	public static Connection getConnection() {
		Connection con = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			con = DriverManager.getConnection("jdbc:mysql://localhost/site",
					"root", "root");
			return con;
		} catch (Exception e) {
			System.out.println(e);
			return null;
		}
	}

	// 关闭数据库
	public static void close(ResultSet rs, PreparedStatement ps, Connection con) {
		if (rs != null) {
			try {
				rs.close();
			} catch (Exception e) {
				System.out.println(e);
			}
		}
		if (ps != null) {
			try {
				ps.close();
			} catch (Exception e) {
				System.out.println(e);
			}
		}
		if (con != null) {
			try {
				con.close();
			} catch (Exception e) {
				System.out.println(e);
			}
		}
	}
}

 UserDAO.java

public class UserDAO {

	public void delUser(int id) {
		Connection con=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		String sql="delete from user where id=?";
		try{
			con=DBManager.getConnection();
			ps=con.prepareStatement(sql);
			ps.setInt(1, id);
			ps.executeUpdate();
		}catch(Exception e){
			System.out.println(e);
		}finally{
			DBManager.close(rs, ps, con);
		}
		
	}
}

 假如我想一次删除多个用户,而我取的是不同用户的ID.我的做法是写个循环语句,而这个循环语句应写到那个位置比较适合.

方法1:在另一个文件里写上个循环句语,来调用UserDAO.java文件里的删除用户方法,但是这样做法会造成数据源的不断打开与关闭,会不会造成性能问题的下降(我不清楚).

方法2:与方法1差不多,只是把关闭数据源的操作写到另一个文件里而不在写到UserDAO的删除用户方法里,这样在循环语句结束之后,再关闭数据源,不会造成数据源的不断打开与关闭,我感觉这样写的话好像有点不统一,有点乱.

方法3:在另一个文件里把用户ID存到一个List里,然后做为参数传到UserDAO里的删除用户方法,在删除用户方法里写上循环语句.如下所示:

public void delUser(List idList) {
		Connection con=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		try{
                                        for(XXX){
                                                String sql="delete from user where id=?";
			con=DBManager.getConnection();
			ps=con.prepareStatement(sql);
			ps.setInt(1, id);
			ps.executeUpdate();
                                              }
		}catch(Exception e){
			System.out.println(e);
		}finally{
			DBManager.close(rs, ps, con);
		}
		
	}

 这样的写法我感觉不错,但是我有个疑点就是对于con ps rs这样对象我们可以重复利用吗?会不会造成一些不必要的麻烦?不知道大家有什么的想法.

附加:关于事务这方面我应该怎么写,不然的话删除一半用户时突然程序或者数据库有问题时而另一半用户没删除,造成原子的不一致性,那就有麻烦了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值