进程问题

rubasse200 2005-01-18 02:58:12
今天上午到中午我一直在调试程序。
下午管数据库的人找我说,100个进程里有80个是我开的。
不知道是什么原因,请大家帮我分析一下。在这里先谢了。
数据库连接文件如下:

package test;

import java.io.PrintStream;
import java.sql.*;

public class ConnOracle
{

String serverName;
String sDBDriver;
String sConnStr;
Connection connect;
ResultSet rs;

public ConnOracle()
{
serverName = "localhost";
sDBDriver = "oracle.jdbc.driver.OracleDriver";
sConnStr = "jdbc:oracle:thin:@" + serverName + ":1521:zyms8";
connect = null;
rs = null;
try
{
Class.forName(sDBDriver);
}
catch(ClassNotFoundException classnotfoundexception)
{
System.err.println(classnotfoundexception.getMessage());
}
}

public ResultSet executeQuery(String s)
{
try
{
connect = DriverManager.getConnection(sConnStr, "scott", "tiger");
Statement statement = connect.createStatement(1004, 1007);
rs = statement.executeQuery(s);
}
catch(SQLException sqlexception)
{
System.err.println(sqlexception.getMessage());
}
return rs;
}

public int executeUpdate(String s)
{
int i = 0;
try
{
connect = DriverManager.getConnection(sConnStr, "scott", "tiger");
Statement statement = connect.createStatement(1004, 1007);
i = statement.executeUpdate(s);
}
catch(SQLException sqlexception)
{
System.err.println(sqlexception.getMessage());
}
return i;
}
}
引用的文件头:
<%@ page contentType="text/html;charset=GBK" %>
<%@ page language="java" import="java.sql.*"%>
<%@ page import="java.lang.Math.*" %>
<%@ page import="java.util.*" %>
<jsp:useBean id="conn" scope="page" class="test.ConnOracle"/>
<%@ include file="/public/checkvalidadmin.jsp"%>
...全文
91 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
以梦为马 2005-01-18
  • 打赏
  • 举报
回复
友情up。
eureka0891 2005-01-18
  • 打赏
  • 举报
回复
你每次连接没关,

而且你这个类写得不好啊
ConnOracle要么你的这个类只取Connection,不要在这儿处理查询.
public class ConnOracle
{

String serverName;
String sDBDriver;
String sConnStr;
Connection connect;

public Connection getOracleConn() throws Exception
{
serverName = "localhost";
sDBDriver = "oracle.jdbc.driver.OracleDriver";
sConnStr = "jdbc:oracle:thin:@" + serverName + ":1521:zyms8";
connect = null;
try
{
Class.forName(sDBDriver);
connect = DriverManager.getConnection(sConnStr, "scott", "tiger");
}
catch(ClassNotFoundException classnotfoundexception)
{
System.err.println(classnotfoundexception.getMessage());
}
return connect
}

public void close() throws Exception{
connect.close();
}

}

在你executeUpdate时这样写:
try{
con = ConnOracle.getOracleConn();
....
}catch(Exception e){

}finally{
ConnOracle.close();
}
还有一个建议,不要返回ResultSet
这个东西关了Connection就会没了,
最好是把取出来的结果放到bean里,或者ArrayList里

jokerjava 2005-01-18
  • 打赏
  • 举报
回复
....没点常识啊
北极猩猩 2005-01-18
  • 打赏
  • 举报
回复
从头到尾没有找到一个close能不那样吗?

记住,调用之后一定要关闭连接
bwsabc 2005-01-18
  • 打赏
  • 举报
回复
同意楼上的。
lvyuanfang 2005-01-18
  • 打赏
  • 举报
回复
再加一个方法:
public void close() throws Exception{
rs.close();
connect.close();
}
在每次调用这个类的相关方法后都调用这个close方法。
nouveau 2005-01-18
  • 打赏
  • 举报
回复
你不能每次调用executeUpdate都用DriverManager生成一个新的connection
而是在ConnOracle生成一次:connect=
connect = DriverManager.getConnection(sConnStr, "scott", "tiger");
然后以后每次都是return 这个connection而不是重新生成一遍
bboonnee 2005-01-18
  • 打赏
  • 举报
回复
好象没有释放连接
li_d_s 2005-01-18
  • 打赏
  • 举报
回复
你的conn都没有关掉,记得用完之后要conn.close();

81,092

社区成员

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

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