CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

连接oracle数据库连接池的bean,通是通了,但是还是有问题,高手帮忙看看!

楼主hamerlove(小丸子)2003-12-02 11:54:42 在 Java / Web 开发 提问

连接oracle数据库连接池的bean,通是通了,但是还是有问题,高手帮忙看看!  
  bean代码如下:  
  package   MyBean;  
   
  import   java.sql.*;  
  import   javax.naming.*;  
   
  public   class   linkOracle   {  
      Connection   conn   =   null;  
      Statement   stmt   =   null;  
      ResultSet   rs   =   null;  
      Context   ctx   =   null;  
      Object   obj   =   null;  
      Context   initCtx   =   null;  
   
      public   linkOracle(){  
      }  
   
      public   ResultSet   executeQuery(String   sql)   throws   Exception   {  
          stmt   =   null;  
          rs   =   null;  
        try{  
                      initCtx   =   new   InitialContext();  
                      ctx   =   (Context)   initCtx.lookup("java:comp/env");//获取连接池对象  
                      obj   =   (Object)   ctx.lookup("jdbc/OracleDB");//类型转换  
                      javax.sql.DataSource   ds   =   (javax.sql.DataSource)obj;  
                      conn   =   ds.getConnection();  
                      stmt   =   conn.createStatement();  
                      rs   =   stmt.executeQuery(sql);  
                }catch(Exception   ex){  
                      ex.printStackTrace();  
                      throw   new   SQLException("can't   get   Connection   pool.");  
                }  
        return   rs;  
      }  
   
      public   boolean   executeUpdate(String   sql)   throws   Exception   {  
          stmt   =   null;  
                try{  
                      initCtx   =   new   InitialContext();  
                      ctx   =   (Context)   initCtx.lookup("java:comp/env");//获取连接池对象  
                      obj   =   (Object)   ctx.lookup("jdbc/OracleDB");//类型转换  
                      javax.sql.DataSource   ds   =   (javax.sql.DataSource)obj;  
                      conn   =   ds.getConnection();  
                      stmt   =   conn.createStatement();  
                      stmt.executeUpdate(sql);  
      return   true;  
                }catch(Exception   ex){  
                      ex.printStackTrace();  
                      throw   new   SQLException("can't   get   Connection   pool.");  
                }  
      }  
      public   void   closeStmt()   {  
          try   {  
              stmt.close();  
          }  
          catch   (SQLException   e)   {  
              e.printStackTrace();  
          }  
      }  
      public   void   closeConn()   {  
          try   {  
              conn.close();  
          }  
          catch   (SQLException   e)   {  
              e.printStackTrace();  
          }  
      }  
  }  
  通常都可以用的,有时候页面一片空白什么反映都没有,tomcat也没反映;而且经常tomcat会有报错,好郁闷,希望各位高手能够帮忙看一下!  
   
  问题点数:20、回复次数:14Top

1 楼giftxi(alfred)回复于 2003-12-02 12:07:49 得分 0

页面是不是错了,可能传入的SQL这个参数错了。Top

2 楼hamerlove(小丸子)回复于 2003-12-02 12:12:12 得分 0

页面上是没有问题的,因为我以前不用连接池的时候都正常,用了之后也是正常,但是有些时候愣就是不出来,有些时候就正常,真够变的!Top

3 楼yupingping(平平)回复于 2003-12-02 13:26:57 得分 0

upTop

4 楼cricketlj(蟋蟀)回复于 2003-12-02 13:41:26 得分 5

没有执行closeStmt()和closeConn()        
   
  public   boolean   executeUpdate(String   sql)   throws   Exception   {  
          stmt   =   null;  
                try{  
                      initCtx   =   new   InitialContext();  
                      ctx   =   (Context)   initCtx.lookup("java:comp/env");//获取连接池对象  
                      obj   =   (Object)   ctx.lookup("jdbc/OracleDB");//类型转换  
                      javax.sql.DataSource   ds   =   (javax.sql.DataSource)obj;  
                      conn   =   ds.getConnection();  
                      stmt   =   conn.createStatement();  
                      stmt.executeUpdate(sql);  
      return   true;  
                }catch(Exception   ex){  
                      ex.printStackTrace();  
                      throw   new   SQLException("can't   get   Connection   pool.");  
                }finally{  
                      closeStmt();  
                      closeConn();  
                }  
      }Top

5 楼hamerlove(小丸子)回复于 2003-12-02 13:55:38 得分 0

我在程序里面手工执行了closestmt和closeconn了!好象写在bean里面不行耶!Top

6 楼junyi2003(超级菜鸟)回复于 2003-12-02 14:11:27 得分 0

设计有问题的说。  
  像一些初始化的事情,完全可以放在构造器里。其他方法就不需要关心这类操作,只要考虑参数的操作和逻辑上的判断。  
   
  Top

7 楼hamerlove(小丸子)回复于 2003-12-02 14:14:34 得分 0

同意楼上的说法,我刚开始是把initCtx   =   new   InitialContext();放在他的构造函数里的,可是愣是会报错,所以才放到个方法里的,请告诉我构造函数里应该放些什么呢?  
  Top

8 楼junyi2003(超级菜鸟)回复于 2003-12-02 14:24:42 得分 0

构造器也可以throws   Error  
   
  可能你initCtx   =   new   InitialContext();有Exception要throw,你也可以try...catch...  
   
  initCtx   =   new   InitialContext();  
  ctx   =   (Context)   initCtx.lookup("java:comp/env");//获取连接池对象  
  obj   =   (Object)   ctx.lookup("jdbc/OracleDB");//类型转换  
  javax.sql.DataSource   ds   =   (javax.sql.DataSource)obj;  
  conn   =   ds.getConnection();  
  stmt   =   conn.createStatement();  
   
  你用数据库必需的成员,而且使用中不太会改变的一些固定步骤。  
  //:-)Top

9 楼shiquan(_GAMEr_)回复于 2003-12-02 14:51:20 得分 0

你把log拿出来让大家看看啊!Top

10 楼hamerlove(小丸子)回复于 2003-12-02 15:23:33 得分 0

呵呵,我刚学的jsp,所以还不知道如何写initCtx   =   new   InitialContext();要throw的Exception怎么写,麻烦超菜先生写一下!Top

11 楼hamerlove(小丸子)回复于 2003-12-02 15:35:00 得分 0

我的localhost_log.2003-12-02.txt文件如下:  
  2003-12-02   15:18:49   WebappLoader[/test]:   Deploying   class   repositories   to   work   directory   C:\Tomcat   4.1\work\Standalone\localhost\test  
  2003-12-02   15:18:50   WebappLoader[/test]:   Deploy   class   files   /WEB-INF/classes   to   F:\test\WEB-INF\classes  
  2003-12-02   15:18:50   WebappLoader[/test]:   Reloading   checks   are   enabled   for   this   Context  
  2003-12-02   15:18:50   ContextConfig[/test]:   Missing   application   web.xml,   using   defaults   only  
  2003-12-02   15:18:50   StandardManager[/test]:   Seeding   random   number   generator   class   java.security.SecureRandom  
  2003-12-02   15:18:50   StandardManager[/test]:   Seeding   of   random   number   generator   has   been   completed  
  2003-12-02   15:18:50   StandardWrapper[/test:default]:   Loading   container   servlet   default  
  2003-12-02   15:18:50   StandardWrapper[/test:invoker]:   Loading   container   servlet   invoker  
  2003-12-02   15:18:51   WebappLoader[]:   Deploying   class   repositories   to   work   directory   C:\Tomcat   4.1\work\Standalone\localhost\_  
  2003-12-02   15:18:51   WebappLoader[]:   Deploy   class   files   /WEB-INF/classes   to   F:\work\golding   soft\zlwl\webproject\defaultroot\WEB-INF\classes  
  2003-12-02   15:18:51   WebappLoader[]:   Reloading   checks   are   enabled   for   this   Context  
  2003-12-02   15:18:51   StandardManager[]:   Seeding   random   number   generator   class   java.security.SecureRandom  
  2003-12-02   15:18:51   StandardManager[]:   Seeding   of   random   number   generator   has   been   completed  
  2003-12-02   15:18:51   StandardWrapper[:default]:   Loading   container   servlet   default  
  2003-12-02   15:18:51   StandardWrapper[:invoker]:   Loading   container   servlet   invoker  
  2003-12-02   15:18:51   HostConfig[localhost]:   Deploying   configuration   descriptor   admin.xml  
  2003-12-02   15:18:57   HostConfig[localhost]:   Deploying   configuration   descriptor   manager.xml  
  2003-12-02   15:18:57   WebappLoader[/manager]:   Deploying   class   repositories   to   work   directory   C:\Tomcat   4.1\work\Standalone\localhost\manager  
  2003-12-02   15:18:57   ContextConfig[/manager]:   Configured   an   authenticator   for   method   BASIC  
  2003-12-02   15:18:57   StandardManager[/manager]:   Seeding   random   number   generator   class   java.security.SecureRandom  
  2003-12-02   15:18:57   StandardManager[/manager]:   Seeding   of   random   number   generator   has   been   completed  
  2003-12-02   15:18:57   StandardWrapper[/manager:default]:   Loading   container   servlet   default  
  2003-12-02   15:18:57   StandardWrapper[/manager:invoker]:   Loading   container   servlet   invoker  
  2003-12-02   15:18:57   HostConfig[localhost]:   Deploying   web   application   directory   tomcat-docs  
  2003-12-02   15:18:57   StandardHost[localhost]:   Installing   web   application   at   context   path   /tomcat-docs   from   URL   file:C:\Tomcat   4.1\webapps\tomcat-docs  
  2003-12-02   15:18:57   WebappLoader[/tomcat-docs]:   Deploying   class   repositories   to   work   directory   C:\Tomcat   4.1\work\Standalone\localhost\tomcat-docs  
  2003-12-02   15:18:57   StandardManager[/tomcat-docs]:   Seeding   random   number   generator   class   java.security.SecureRandom  
  2003-12-02   15:18:57   StandardManager[/tomcat-docs]:   Seeding   of   random   number   generator   has   been   completed  
  2003-12-02   15:18:57   StandardWrapper[/tomcat-docs:default]:   Loading   container   servlet   default  
  2003-12-02   15:18:57   StandardWrapper[/tomcat-docs:invoker]:   Loading   container   servlet   invoker  
  2003-12-02   15:18:57   HostConfig[localhost]:   Deploying   web   application   directory   webdav  
  2003-12-02   15:18:57   StandardHost[localhost]:   Installing   web   application   at   context   path   /webdav   from   URL   file:C:\Tomcat   4.1\webapps\webdav  
  2003-12-02   15:18:57   WebappLoader[/webdav]:   Deploying   class   repositories   to   work   directory   C:\Tomcat   4.1\work\Standalone\localhost\webdav  
  2003-12-02   15:18:57   StandardManager[/webdav]:   Seeding   random   number   generator   class   java.security.SecureRandom  
  2003-12-02   15:18:57   StandardManager[/webdav]:   Seeding   of   random   number   generator   has   been   completed  
  2003-12-02   15:18:57   StandardWrapper[/webdav:default]:   Loading   container   servlet   default  
  2003-12-02   15:18:57   StandardWrapper[/webdav:invoker]:   Loading   container   servlet   invoker  
  Top

12 楼junyi2003(超级菜鸟)回复于 2003-12-02 16:08:55 得分 15

/**  
    *大致上这样写吧  
    */  
  public   linkOracle()   throws   NamingException,SQLException,Exception{  
        try{  
                      initCtx   =   new   InitialContext();/*这个会抛出NamingException这个异常*/  
                      ctx   =   (Context)   initCtx.lookup("java:comp/env");//获取连接池对象  
                      obj   =   (Object)   ctx.lookup("jdbc/OracleDB");//类型转换  
                      javax.sql.DataSource   ds   =   (javax.sql.DataSource)obj;  
                      conn   =   ds.getConnection();  
                      stmt   =   conn.createStatement();  
        }catch(NameingException   ne){  
              out.println(".....");  
              throw   ne;  
        }catch(SQLException   se){  
              out.println(".....");  
              throw   ne;  
        }catch(Exception   ex){  
              out.println(".....");  
              throw   ex;  
        }  
  }  
  Top

13 楼yupingping(平平)回复于 2003-12-02 16:31:10 得分 0

upTop

14 楼yellowzhong(程序黄了)回复于 2003-12-02 16:37:44 得分 0

高手不少Top

相关问题

  • 如何实现oracle数据库与access数据库的实时通信?
  • 我的oracle数据库为什么连不通?
  • JSP 中如何通过weblogic pool 来连接Oracle数据库 !!thank
  • ADO中不通过别名如何连接ORACLE数据库?
  • pb通过odbc连接oracle数据库,提示失败
  • Oracle的数据库和表。
  • oracle数据库开发
  • 连不上oracle数据库
  • oracle数据库备份急???????????
  • VC++6.0连oracle数据库

关键词

  • 连接
  • 数据库
  • 转换
  • ds
  • initctx
  • webapploader
  • 连接池
  • initialcontext
  • closestmt
  • ctx

得分解答快速导航

  • 帖主:hamerlove
  • cricketlj
  • junyi2003

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo