连接oracle数据库连接池的bean,通是通了,但是还是有问题,高手帮忙看看!
连接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




