求助,关于数据库连接的问题

ruirui521 2001-12-30 04:16:01
这是我的sql.class:-----------
import java.sql.*;
public class sql
{
String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
String sConnStr = "jdbc:odbc:txl";
Connection conn = null;
ResultSet rs = null;
public sql()
{
try
{
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e)
{
System.err.println("sql(): " + e.getMessage());
}
}
public void Execute(String sql)
{
try
{
conn = DriverManager.getConnection(sConnStr);
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
}
catch(SQLException ex)
{
System.err.println("sql.execute:"+ex.getMessage());
}
}
public ResultSet Open(String sql)
{
rs = null;
try
{
conn = DriverManager.getConnection(sConnStr);
Statement stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException ex)
{
System.err.println("sql.Open:"+ex.getMessage());
}
return rs;
}
}
-------------------------------------------------------------------------------
我在一个页里频繁的调用Open()方法,而连接conn没有关闭过,是不是每调用一次都新建了一个连接?
如果我的jsp里:<jsp:useBean id="Conn" scope="session" class="sql" />,是不是只是在同一个session里只加载了一次驱动,而以后每次调用Execute()或Open()都打开了新的连接?应该每次用完了连接都关闭了吧?
...全文
118 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruirui521 2001-12-31
  • 打赏
  • 举报
回复
不好意思,我是用做商业开发的,因为公司下一个项目是运行在java平台上做B/S结构的。而我以前是做C/S(VB/Delphi)的,对java/jsp并不熟悉
不过还是多谢你了。
ycats 2001-12-31
  • 打赏
  • 举报
回复
还有,如果你只是个人爱好编程,而不是做商业开发,不必借以我说的东西。就象white_dog(小白)所说的, 几乎每本jsp的书上都有这样一模一样用bean连接数据库的方法,因为那是给个人编程学着用的。就象在jsp中写方法,就是为了让jsp跟ASP一样,一般人都随便用而加的,虽然它违反了OOP的基本原则。
ycats 2001-12-31
  • 打赏
  • 举报
回复
1、只需关闭连接
2、数据库的连接单独一个方法;关闭也要一个方法;在一个jsp里连接一次,最后结束时关闭。
3、不用缓冲池,就是连接速度慢、资源消耗不可控制而已(比如如果有100个人同时访问,大概就很多服务器不崩溃啦)
ruirui521 2001-12-31
  • 打赏
  • 举报
回复
to:加菲猫
Statement也有close()方法,那每次用完close Statement \Resultset\Conn,那不是太烦了?
请你提供一个简洁的连接数据库的bean,如下功能:
1 用完了连接后合理的关闭
2 一个bean的conn能被共享使用(如果能的话)。
其实就是你认为不是垃圾的数据库Bean,而没有用数据库连接池。
ruirui521 2001-12-31
  • 打赏
  • 举报
回复
在关闭连接之前有没有必要先关闭ResultSet?
或者在这个例子中我可以把conn = DriverManager.getConnection(sConnStr);放到构造函数中去从而每次Execute和Open都可以用这同一个连接来createStatement();吗?还是当一次createStatement();后这条conn就被独占了,而不能再创建下一个Statement。
white_dog 2001-12-31
  • 打赏
  • 举报
回复
to:ycats(加菲猫) 
我看到的几乎每本jsp的书上都有这样一模一样用bean连接数据库的方法。看来并不能迷信书本啊。
kmonkey 2001-12-31
  • 打赏
  • 举报
回复
每次调用完后都应该关闭
ruirui521 2001-12-31
  • 打赏
  • 举报
回复
多谢,我已经试过了.
ycats 2001-12-31
  • 打赏
  • 举报
回复
是的
ruirui521 2001-12-31
  • 打赏
  • 举报
回复
真是不好意思,还要问一下:
“数据库的连接单独一个方法;关闭也要一个方法;在一个jsp里连接一次,最后结束时关闭。”
如果我单独做了一个方法建立连接:conn
是不是我其他的方法Execute()\Open()等就可以直接用这个连接了?
也就是问一下conn = DriverManager.getConnection(sConnStr);一次以后,
Statement stmt = conn.createStatement();是否可以有多次.
bian8021 2001-12-30
  • 打赏
  • 举报
回复
是的,每次调用都会新建一个连接,
应该是每次调用完后,在不用的情况的情况下应该关闭。以免出现混乱情况。
Fancy_fan 2001-12-30
  • 打赏
  • 举报
回复
手动关闭呀!
ycats 2001-12-30
  • 打赏
  • 举报
回复
to : white_dog(小白) 
这是个经典的连接数据库的bean?
开玩笑吧,这分明是垃圾啊

ycats 2001-12-30
  • 打赏
  • 举报
回复
1、是每调用一次都新建了一个连接
2、每次调用Execute()或Open()都打开了新的连接
3、每次用完了连接都不会关闭
white_dog 2001-12-30
  • 打赏
  • 举报
回复
这是个经典的连接数据库的bean
我也想问这个问题,应该还有构造函数关闭数据库连接的吧。
有stmt.close()

81,095

社区成员

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

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