刚看了一下Hashtable和PreparedStatement,写了一段代码,请大家点评一下

lanse89 2004-11-26 07:52:08
public Hashtable getPreparedStatement(Hashtable sqls)throws SQLException{
Hashtable pstmts = null; //保存产生的PreparedStatement,其key为SQL的标识。

String sqlName = null;//SQL的标识,也是产生的PreparedStatement的标识。
String sql = null; //SQL语句。
if(conn==null) //conn表示连接
conn = connMgr.getConnection(this.strDBName);//若连接为空则从连接池建新连接。

Enumeration e = sqls.keys();
while(e.hasMoreElements()){
sqlName = (String)e.nextElement();
sql = (String)sqls.get(sqlName);

pstmts.put(sqlName, conn.prepareStatement(sql));
}
return pstmts;
}

说明:我是想用这个函数来生成一系列的PrepareStatement。然后可以在servlet中调用。当然产生的PrepareStatement不会是很多个。

初涉JAVA不知道这样用好不好,请大家给点意见吧!
...全文
299 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanse89 2004-12-02
  • 打赏
  • 举报
回复
谢谢wingtrace(暮寒.烟灰.风化物.天佑我的母亲) ,我试一下你的方法。
梦想家起飞 2004-11-29
  • 打赏
  • 举报
回复
pstmt.executeBatch() 可以返回ResultSet吗?

==========================

明确回答你:不行。

我建议你把每个Servlet里面需要的每个SQL都封装成一个数据访问对象。每个SQL返回的数据要作成XML的Document对象,所有你可以把作成XML的代码封装起来公用。XML的Document作成,并且系列化之后,就可以写入到response对象的PrintWriter里返回客户端了。

--这样一来,逻辑不就很明确了吗??
loverisyour 2004-11-29
  • 打赏
  • 举报
回复
学习下
lanse89 2004-11-29
  • 打赏
  • 举报
回复
再说明一下:
这个方法是用在一个执行SQL语句的类里面,所以的SQL语句都在这里面执行。
所以我想用Hashtable来保存生成的所有的PreparedStatement;
这样当使用完成以后可以做一个统一的清理。
不知道大家意见如何?
lanse89 2004-11-29
  • 打赏
  • 举报
回复
To: wzrlover(无语无声无欲无泪吾独行!)
pstmt.executeBatch() 可以返回ResultSet吗?
wzrlover 2004-11-29
  • 打赏
  • 举报
回复
应该pstmt.executeBatch()就可以满足你的要求了
lanse89 2004-11-29
  • 打赏
  • 举报
回复
TO: wingtrace(暮寒.烟灰.风化物.天佑我的母亲)
因为我做的是一个servlet服务,只提供XML数据服务,所以对于一个servlet对应数据库中一个表,且每个servlet不会超过三条SQL语句。
jimaojian 2004-11-27
  • 打赏
  • 举报
回复
同意楼上的意见,学习,
梦想家起飞 2004-11-26
  • 打赏
  • 举报
回复
这种方法在逻辑上固然是没问题的,只是在实际中不这么用。

我不知道你要实现的是什么功能,需要用到那么多的SQL(在一个功能模块里面?),我的感觉是你的项目设计可能不甚合理。该拆分的就拆分,该合并的就合并,如果项目的初期就设计的不好,那么到了后期要改起来是非常麻烦的。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧