package bean;
import java.sql.*;
public class databaseBean{ private String DBLocation ="jdbc:odbc:drug_datasource"; //ODBC:DSN
private String User ="sa";
private String Password ="sa";
private String DBDriver ="sun.jdbc.odbc.JdbcOdbcDriver"; //jdbc-odbc驱动程序
private ResultSet rs =null;
private Connection conn =null;/** 构造函数 **/
public databaseBean(){
}
///
public void executeUpdate(String sql)
{
if(conn ==null){
DBConnect();
} if(conn ==null){
return;
}
else{
try{
Statement s =conn.createStatement();
// System.out.println(sql);
s.executeUpdate(sql);
}
catch(SQLException e){e.printStackTrace();
}
}}
public ResultSet executeQuery(String sql)
{
if(conn ==null){
DBConnect();
} if(conn ==null){
rs =null;
}
else{
try{
Statement s =conn.createStatement();
rs =s.executeQuery(sql);
}
catch(SQLException e){e.printStackTrace();
}
}
return(rs);
}
///
public String DBConnect()
{
String strExc ="";
try{
Class.forName(DBDriver);
conn =DriverManager.getConnection(DBLocation,User,Password);
}
catch(ClassNotFoundException e){
strExc =e.toString();
}
catch(SQLException e){
strExc =e.toString();
}
return(strExc);
}
/**
设置一个可用的数据地址
*/
public void setDBLocation(String location){
DBLocation =location;
}
/**
设置一个可用的数据库连接
*/
public void setconn(Connection con){
conn =con;
}
/**
设置一个JDBC驱动程序
*/
public void setDBDriver(String driver){
DBDriver =driver;
}
/**
设置一个User
*/
public void setUser(String user){
User =user;
}
/**
设置User的Password
*/
public void setPassword(String pw){
Password =pw;
}
/**
获得当前的数据源地址
*/
public String getDBLocation(){
return(DBLocation);
}
/**
获得当前的JDBC驱动器
*/
public String getDBDriver(){
return(DBDriver);
}
/**
获得当前的结果记录集
*/
public ResultSet getRS(){
return(rs);
}
/**
获得当前的数据库连接
*/
public Connection getconn(){
return(conn);
}public void close(){
try {
conn.close();
rs.close();
}
catch (Exception e) {
e.printStackTrace();
}
}}///:~
原代码如下,每次我查询完后,调用close();都会出现ResultSet未关闭的异常
import java.sql.*;
public class databaseBean{ private String DBLocation ="jdbc:odbc:drug_datasource"; //ODBC:DSN
private String User ="sa";
private String Password ="sa";
private String DBDriver ="sun.jdbc.odbc.JdbcOdbcDriver"; //jdbc-odbc驱动程序
private ResultSet rs =null;
private Connection conn =null;/** 构造函数 **/
public databaseBean(){
}
///
public void executeUpdate(String sql)
{
if(conn ==null){
DBConnect();
} if(conn ==null){
return;
}
else{
try{
Statement s =conn.createStatement();
// System.out.println(sql);
s.executeUpdate(sql);
}
catch(SQLException e){e.printStackTrace();
}
}}
public ResultSet executeQuery(String sql)
{
if(conn ==null){
DBConnect();
} if(conn ==null){
rs =null;
}
else{
try{
Statement s =conn.createStatement();
rs =s.executeQuery(sql);
}
catch(SQLException e){e.printStackTrace();
}
}
return(rs);
}
///
public String DBConnect()
{
String strExc ="";
try{
Class.forName(DBDriver);
conn =DriverManager.getConnection(DBLocation,User,Password);
}
catch(ClassNotFoundException e){
strExc =e.toString();
}
catch(SQLException e){
strExc =e.toString();
}
return(strExc);
}
/**
设置一个可用的数据地址
*/
public void setDBLocation(String location){
DBLocation =location;
}
/**
设置一个可用的数据库连接
*/
public void setconn(Connection con){
conn =con;
}
/**
设置一个JDBC驱动程序
*/
public void setDBDriver(String driver){
DBDriver =driver;
}
/**
设置一个User
*/
public void setUser(String user){
User =user;
}
/**
设置User的Password
*/
public void setPassword(String pw){
Password =pw;
}
/**
获得当前的数据源地址
*/
public String getDBLocation(){
return(DBLocation);
}
/**
获得当前的JDBC驱动器
*/
public String getDBDriver(){
return(DBDriver);
}
/**
获得当前的结果记录集
*/
public ResultSet getRS(){
return(rs);
}
/**
获得当前的数据库连接
*/
public Connection getconn(){
return(conn);
}public void close(){
try {
conn.close();
rs.close();
}
catch (Exception e) {
e.printStackTrace();
}
}}///:~
原代码如下,每次我查询完后,调用close();都会出现ResultSet未关闭的异常
另外,关闭连接一般都在finally里面做。
try {
conn.close();
rs.close();
}
catch (Exception e) {
e.printStackTrace();
}
}应该rs.close();先
再conn.close();
虽然没写过你这样的写法,但觉得这样是错的
不过,如果先关闭conn,再关闭rs就会报错的。