static的数据库连接对于单进程程序有没有影响?

stillfire 2009-08-14 08:35:26
应用进程通过dbaccess这个类访问oracle数据库

public class DbAccess {
static OracleDataSource ods;
public static OracleConnection con;
.....
}

进程中应用的时候,并不是没一次建立一个Connection对象,而是使用静态的连接。
如下所示:
public static int executeProgBlobProcedure(String path, String filename)
throws FileNotFoundException, IOException,SQLException {
try {
DbAccess.getConnection();
csmt = DbAccess.con.prepareCall("{call ....");
....
}

网上说,如果多线程的情况下,connection的调用会出错,但是,我们的程序是一个单进程的程序,这样写会不会给程序带来隐患呢?(目前,有一个问题,oracle如果长时间不连接的话,会出现第一次连接不上的问题,我怀疑是因为这段代码造成的。)


大家给个意见,谢谢!


...全文
153 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaozejun 2009-08-18
  • 打赏
  • 举报
回复
搞不懂楼主是在干什么 既然你用了Oracle这样的大型数据库 为什么还是单线程的呢
当然 既然是单线程的话 那么static的数据库连接应该是没有什么影响的
lovecj6185 2009-08-18
  • 打赏
  • 举报
回复
偶觉得楼主这样不会有太大问题
因为你是单进程,而且用完就关

对于数据库,只是像一个工具一样
gesanri 2009-08-15
  • 打赏
  • 举报
回复
多线程的话应该采用线程池,既然你是单线程,用完后应该关闭连接吧,你这样一直不关恐怕不行
monkeyking1987 2009-08-15
  • 打赏
  • 举报
回复
配过连接池也不错。
stillfire 2009-08-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 healer_kx 的回复:]
要进行同步吧?用synchronized试一试。
[/Quote]

单进程,为什么要进行同步呢?

[Quote=引用 5 楼 gesanri 的回复:]
多线程的话应该采用线程池,既然你是单线程,用完后应该关闭连接吧,你这样一直不关恐怕不行
[/Quote]

关了,每次用完之后就关闭连接。-_- ,我可能之前没有说清楚
stillfire 2009-08-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 supreme1008 的回复:]
因为你这个static获得的connection是只获取一次的,所以当你用了这个connection的时候,你是关闭好,还是不关闭呢?估计你连接不上就是已经关闭了吧
还有,既然你都用到oracle的数据库了,为什么只获取一个连接呢?这样不会有点浪费吗~~
[/Quote]

并不是这样的,我每次使用的时候都去获得连接,用完之后再关闭。
这个问题和oracle数据库没有关系。我只是用了oracle连接的驱动。
好吃的松子 2009-08-14
  • 打赏
  • 举报
回复
这个方式的确不好,容易出问题,我之前就试过
yanliang_xt 2009-08-14
  • 打赏
  • 举报
回复
邦顶,
学习,
supreme1008 2009-08-14
  • 打赏
  • 举报
回复
因为你这个static获得的connection是只获取一次的,所以当你用了这个connection的时候,你是关闭好,还是不关闭呢?估计你连接不上就是已经关闭了吧
还有,既然你都用到oracle的数据库了,为什么只获取一个连接呢?这样不会有点浪费吗~~
healer_kx 2009-08-14
  • 打赏
  • 举报
回复
要进行同步吧?用synchronized试一试。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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