`
xuejianshan
  • 浏览: 222540 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

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这样对象我们可以重复利用吗?会不会造成一些不必要的麻烦?不知道大家有什么的想法.

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

分享到:
评论
2 楼 王者之剑 2008-06-16  
怎么这年头还在用自己写的DBManager阿
1 楼 wuzhe200 2008-06-12  
用executeBatch()啊
conn.setAutoCommit(false);  
ps = conn.preparedStatement( " delete from user where id=? " );
for(XXX)
{
   ps.setInt(1, id);  
   ps.addBatch();
}
ps.executeBatch();
try  
  {  
      conn.commit();  
  }  
  catch   (SQLException   e)  
  {  
      conn.rollback();  
  }
批量我一般都用它的, 这样试试吧

相关推荐

    我求教高手的VB毕业设计

    【标题】:“我求教高手的VB毕业设计” 在VB(Visual Basic)中进行数据库操作是常见的编程任务,尤其是在毕业设计项目中。VB提供了一种简单的方式来与数据库交互,特别是像Access这样的桌面数据库管理系统。当你在...

    S函数最大功率跟踪采用的是三次插值方法求教指出错误-mppt.mdl

    S函数最大功率跟踪采用的是三次插值方法求教指出错误-mppt.mdl 这是仿真模型和错误原因图 附件: sfun_mppt.m S函数程序   mppt.mdl 插值仿真模型 错误.jpg ...

    求教一个asp调试的问题

    asp调试的问题

    S函数最大功率跟踪采用的是三次插值方法求教指出错误-sfun_mppt.m

    S函数最大功率跟踪采用的是三次插值方法求教指出错误-sfun_mppt.m 这是仿真模型和错误原因图 附件: sfun_mppt.m S函数程序   mppt.mdl 插值仿真模型 错误....

    公式求教共4页.pdf.zip

    很抱歉,根据您提供的信息,"公式求教共4页.pdf.zip"似乎是一个包含四页公式教学内容的PDF文档的压缩文件,而"赚钱项目"可能是压缩包中的另一个文件或者是一个误输入。然而,没有实际的文件内容,我无法提供具体的IT...

    求教C++等等一系列的问题

    #### 描述解析:“这是一个值得人深思的事情,希望莘莘学子能都好好的考虑一下这些内容的背后” 这段描述暗示着作者希望通过探讨C++及其他相关问题,引导读者思考更深层次的技术内涵和个人成长方向。在学习C++的...

    求教模糊Ts辨识里对于系统结构辨识的确定和归一化数据-一些文献.rar

    还是用什么工具箱,我看到有些文献说,用穷尽式搜索法来确定,看它的参考文献是一个toolbox,在网上也找不到。看到的外文文献是Numerical solution of both parameter and structural identification problems [18] ...

    extjs文件浏览框问题求教

    标题中的“extjs文件浏览框问题求教”表明这是一个关于ExtJS框架中文件选择或浏览功能的编程问题。ExtJS是一个流行的JavaScript库,用于构建富客户端应用程序,它提供了丰富的组件库,包括文件浏览框(FileBrowser)...

    PHP推广链接的修改,求教

    PHP推广链接的修改,求教 这两个文件可以随时互换的,只是推广链接的形式不同;

    java考试题 求教

    首先,我们需要创建一个员工类`Emp`来存储员工信息。该类包含四个属性:`emp_id`(员工编号)、`emp_name`(员工姓名)、`job`(职位)和`salary`(薪资)。同时为了方便后续操作,我们还需要定义相应的构造方法和...

    挂机软件破解求教

    请高手破解注册码,软件没有加壳,所有请告诉把注册码搞出来

    求教电力系统仿真-039THDAT.DAT

    求教电力系统仿真-039THDAT.DAT ...现在要用matlab仿真一个39-bus的电力系统在一个故障(如其中一条母线三相短路)清除后的一小段时间,各种发电机的功角特性图,请大神告知详细步骤与操作,谢谢!节点数据见附件

    如何成为维修高手PPT教案.pptx

    在维修领域,成为高手并非一蹴而就的事情,它需要一系列的知识积累、技能训练和实践经验。以下是一些关键要点,帮助你逐步提升为维修专家。 首先,面对未知的问题,要有谨慎的态度。不要在不了解状况的情况下随意...

    卡尔曼滤波求教-chap1_27.mdl

    卡尔曼滤波求教-chap1_27.mdl ...在看关于卡尔曼滤波的东西,下面是在教程上看到的一个实例,仿真结果也没有问题,但是输出的结果都是关于变量Y(n)的,我想问一下有没有办法可以显示出X(n)的变化过程,谢谢

Global site tag (gtag.js) - Google Analytics