应用进程通过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如果长时间不连接的话,会出现第一次连接不上的问题,我怀疑是因为这段代码造成的。)
大家给个意见,谢谢!

解决方案 »

  1.   

    要进行同步吧?用synchronized试一试。
      

  2.   

    因为你这个static获得的connection是只获取一次的,所以当你用了这个connection的时候,你是关闭好,还是不关闭呢?估计你连接不上就是已经关闭了吧
    还有,既然你都用到oracle的数据库了,为什么只获取一个连接呢?这样不会有点浪费吗~~
      

  3.   


    并不是这样的,我每次使用的时候都去获得连接,用完之后再关闭。
    这个问题和oracle数据库没有关系。我只是用了oracle连接的驱动。
      

  4.   

    搞不懂楼主是在干什么 既然你用了Oracle这样的大型数据库 为什么还是单线程的呢 
    当然 既然是单线程的话 那么static的数据库连接应该是没有什么影响的