package common;
import java.sql.*;
public class DataOperation
{
public void DataOperation()
{
/*
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}
catch(Exception e)
{
System.out.println("驱动程序注册成功!"+e.getMessage());
}
*/
} public ResultSet getResultSet(String sqlstr)
{

try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn = DriverManager.getConnection(connstring,username,pwd);
Statement  stat = conn.createStatement();
ResultSet retResultSet = stat.executeQuery(sqlstr);
return retResultSet;
}
catch(SQLException e)
{
//throw new Exception("数据查询失败!");
System.out.println("数据查询失败!"+e.getMessage());
return null;
}
catch(Exception e)
{
//throw new Exception("发生未知的异常!");
System.out.println("发生未知的异常!"+e.getMessage());
return null;
}

}

public int execSQL(String sqlstr)
{
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn = DriverManager.getConnection(connstring,username,pwd);
Statement  stat = conn.createStatement();
return stat.executeUpdate(sqlstr);
}
catch(SQLException e)
{
//throw new Exception("数据查询失败!");
System.out.println("数据查询失败!"+e.getMessage());
return 0;
}
catch(Exception e)
{
//throw new Exception("发生未知的异常!");
System.out.println("发生未知的异常!"+e.getMessage());
return 0;
}
}

//设置连接字符串
private static final String connstring = "jdbc:microsoft:sqlserver://tinger:1433";
//设置用户名
private static final String username = "PersonRoom";
//设置用户密码
private static final String pwd = "PersonRoom";
}

解决方案 »

  1.   

    我的一点经验,,在bean中,你如果仅仅只是对数据库进行UPDATE操作,可以在操作完成后,
    con.close().stmt.close(),,,但是如果是查询有返回语句,return rs.,,,那么,你最好在jsp中每次使用了查询,使用完结果集以后,rs.close(),,在页面的最后,stmt.close(),,con.close(),,,如果不这样,,JSP服务器及其容易死机,,我就试过,,:)
      

  2.   

    是不是可以在类的dispose的方法里面写比较好?还有有关事务的问题怎么解决?
      

  3.   

    如果使用了查询,你可以用hashtable保存结果,然后rs.close();在把hashtable的内容反映到页面上,这样就没问题了
      

  4.   

    不关闭连接的教训:
    http://expert.csdn.net/Expert/topic/2403/2403654.xml?temp=3.094119E-02
    rs用Vector来储存传递也很爽的说