……
public ResultSet selectinfo (String str){
ResultSet rs=null;
Statement stmt = connection1.createStatement();
try{
rs = stmt.executeQuery(str);
return rs;
}
catch( Exception e)
{
return null;
}
}
……
connection1是整个bean公用的连接,在bean初始化的时候建立。
我有如下很弱智的问题请问诸位大侠:
1、我什么时候才能关闭这个ResultSet以及Statement对象?需要再写一个函数么?
2、页面端(jsp)接收到这个ResultSet之后,这个ResultSet跟bean的ResultSet有什么关系,各存在什么地方?
10 个解决方案
#1
可以再写一个方法,destroy()
至于存在什么地方,哈哈,那位高手来答一下?我是没概念。
至于存在什么地方,哈哈,那位高手来答一下?我是没概念。
#2
try {
}catch(Exception e){}
finally {
try {
if( rs != null ) rs.close();
if( st != null ) st.close();
if( con!=null) con.close();
} catch (Throwable e) {
e.getMessage();}
}
前提是在try里面已经把rs转成别的对象存储了。
你说的bean的ResultSet我不是很清楚,是不是封装了java.sql.ResultSet啊?
}catch(Exception e){}
finally {
try {
if( rs != null ) rs.close();
if( st != null ) st.close();
if( con!=null) con.close();
} catch (Throwable e) {
e.getMessage();}
}
前提是在try里面已经把rs转成别的对象存储了。
你说的bean的ResultSet我不是很清楚,是不是封装了java.sql.ResultSet啊?
#3
如果使用JDBC2.0,那么,在重新生成一个结果集后,上一个结果集会自动析构。
在JDBC3.0中,不存在这个问题。
至于存在什么,JSP中的resultSet只是和bean的resultSet共同指向同一个类里构造的对象。并不是存在什么地方。
在JDBC3.0中,不存在这个问题。
至于存在什么,JSP中的resultSet只是和bean的resultSet共同指向同一个类里构造的对象。并不是存在什么地方。
#4
在Bean里面把ResultSet的结果转存到一个Vector或者什么里面。如果要把数据库的操作封装到类里面,就不要把ResultSet这样的东西,返回给页面。
#5
try {
}catch(Exception e){}
finally {
try {
if( rs != null ) {rs.close();}
st.close();or ps.clost()
con.close();
} catch (Throwable e) {
e.getMessage();}
}
}catch(Exception e){}
finally {
try {
if( rs != null ) {rs.close();}
st.close();or ps.clost()
con.close();
} catch (Throwable e) {
e.getMessage();}
}
#6
ResultSet没有经过序列化,不能在网络上传播,所以不能让JavaBean返回ResultSet,通常应该把resultset加工成Vector来传播。
#7
最好改成用CacheResultSet
#8
同意
加工成Vector后进行输出
加工成Vector后进行输出
#9
public ResultSet executeQuery(String s)
{
ResultSet rs1 = null;
try
{
if(conn != null)
conn.close();
conn = DriverManager.getConnection(sConnStr, UseName, PassWord);
Statement statement = conn.createStatement();
rs1 = statement.executeQuery(s);
}
catch(SQLException sqlexception)
{
System.err.println("rs.executeQuery error" + s + sqlexception.getMessage());
}
return rs1;
}
我是这么写的,我觉得没有必要转为vector
{
ResultSet rs1 = null;
try
{
if(conn != null)
conn.close();
conn = DriverManager.getConnection(sConnStr, UseName, PassWord);
Statement statement = conn.createStatement();
rs1 = statement.executeQuery(s);
}
catch(SQLException sqlexception)
{
System.err.println("rs.executeQuery error" + s + sqlexception.getMessage());
}
return rs1;
}
我是这么写的,我觉得没有必要转为vector
#10
转为vector太耗内存
#1
可以再写一个方法,destroy()
至于存在什么地方,哈哈,那位高手来答一下?我是没概念。
至于存在什么地方,哈哈,那位高手来答一下?我是没概念。
#2
try {
}catch(Exception e){}
finally {
try {
if( rs != null ) rs.close();
if( st != null ) st.close();
if( con!=null) con.close();
} catch (Throwable e) {
e.getMessage();}
}
前提是在try里面已经把rs转成别的对象存储了。
你说的bean的ResultSet我不是很清楚,是不是封装了java.sql.ResultSet啊?
}catch(Exception e){}
finally {
try {
if( rs != null ) rs.close();
if( st != null ) st.close();
if( con!=null) con.close();
} catch (Throwable e) {
e.getMessage();}
}
前提是在try里面已经把rs转成别的对象存储了。
你说的bean的ResultSet我不是很清楚,是不是封装了java.sql.ResultSet啊?
#3
如果使用JDBC2.0,那么,在重新生成一个结果集后,上一个结果集会自动析构。
在JDBC3.0中,不存在这个问题。
至于存在什么,JSP中的resultSet只是和bean的resultSet共同指向同一个类里构造的对象。并不是存在什么地方。
在JDBC3.0中,不存在这个问题。
至于存在什么,JSP中的resultSet只是和bean的resultSet共同指向同一个类里构造的对象。并不是存在什么地方。
#4
在Bean里面把ResultSet的结果转存到一个Vector或者什么里面。如果要把数据库的操作封装到类里面,就不要把ResultSet这样的东西,返回给页面。
#5
try {
}catch(Exception e){}
finally {
try {
if( rs != null ) {rs.close();}
st.close();or ps.clost()
con.close();
} catch (Throwable e) {
e.getMessage();}
}
}catch(Exception e){}
finally {
try {
if( rs != null ) {rs.close();}
st.close();or ps.clost()
con.close();
} catch (Throwable e) {
e.getMessage();}
}
#6
ResultSet没有经过序列化,不能在网络上传播,所以不能让JavaBean返回ResultSet,通常应该把resultset加工成Vector来传播。
#7
最好改成用CacheResultSet
#8
同意
加工成Vector后进行输出
加工成Vector后进行输出
#9
public ResultSet executeQuery(String s)
{
ResultSet rs1 = null;
try
{
if(conn != null)
conn.close();
conn = DriverManager.getConnection(sConnStr, UseName, PassWord);
Statement statement = conn.createStatement();
rs1 = statement.executeQuery(s);
}
catch(SQLException sqlexception)
{
System.err.println("rs.executeQuery error" + s + sqlexception.getMessage());
}
return rs1;
}
我是这么写的,我觉得没有必要转为vector
{
ResultSet rs1 = null;
try
{
if(conn != null)
conn.close();
conn = DriverManager.getConnection(sConnStr, UseName, PassWord);
Statement statement = conn.createStatement();
rs1 = statement.executeQuery(s);
}
catch(SQLException sqlexception)
{
System.err.println("rs.executeQuery error" + s + sqlexception.getMessage());
}
return rs1;
}
我是这么写的,我觉得没有必要转为vector
#10
转为vector太耗内存