Я использую драйвер типа 4 для mysql. Код приведен ниже. В каждом java-файле я создаю db-соединение и закрываю его в конце. Напримерmysql db соединение с java
В abc.java
Dbconnection db=null;
Connection con=null;
PreparedStatement pstmt = null;
public ActionForward execute(----)
{
try{
db=new Dbconnection();//instantiating user defined Dbconnection class object
con=db.getConnection();//creating connection object
...........
Login_Check formBean=(Login_Check)form;//bean class object
pstmt=con.prepareStatement("select type from user_registration where user_name=? and password=? and user_status=?");
//form parameter values
pstmt.setString(1,formBean.getUname().trim());
pstmt.setString(2,formBean.getPassword().trim());
pstmt.setString(3,"Active");//user status should be active
ResultSet rs=pstmt.executeQuery();
if(rs.next())
{
................
db.releasePreparedStatement(pstmt);
db.releaseConnection(con);
return mapping.findForward(SUCCESS);//redirecting to success page
}
else
{
ActionErrors errors = new ActionErrors();
errors.add("both", new ActionMessage("errors.both.wrong"));//if both user name and password is incorrect, gives an error message
saveErrors(request,errors);
//closing connection and prepareStatement objects
db.releasePreparedStatement(pstmt);
db.releaseConnection(con);
return mapping.findForward(FAILURE);//redirecting to failure page
}
}
catch(Exception e)
{
e.printStackTrace();
}
return mapping.findForward(FAILURE);//redirecting to failure page
}
Как что в каждом файле Java я следующий так же ..
В Dbconnection.java файл
public class Dbconnection
{
Connection con=null;
String DB_URL = "jdbc:mysql://localhost:3306/dbname";
String USER = "abc";//db user name
String PASS = "abc";//db password
PreparedStatement pstmt = null;
public synchronized Connection getConnection()
{
try
{
Class.forName("com.mysql.jdbc.Driver");//loading mysql driver
con = DriverManager.getConnection(DB_URL,USER,PASS);//connecting to mysql
}
catch(Exception e)
{
e.printStackTrace();
}
return con;
}
public void releaseConnection(Connection conn)//releasing Connection
{
if(conn!=null)
{
try
{
conn.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
public void releasePreparedStatement(PreparedStatement stmt)//closing PreparedStatement object
{
if(stmt!=null)
{
try
{
stmt.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}
Но Иногда я получаю сообщение об успешном завершении. Но иногда я получаю сообщение об ошибке. В сервере я получаю ошибку
The operation is not allowed after ResultSet is closed
выше проблема заключается происходит только тогда, когда несколько пользователей имеют доступ к одному файлу (бывший abc.java).
Попытайтесь закрыть 'подготовленноеСвязь' перед' соединением', также вы должны добавить больше кода, потому что ResultSet, на который ссылается ваша исключение, не отображается в коде, который вы указали ... – Marcx
больше кода означает? Это правильный способ создания и закрытия соединения. – Satya
Добавить недостающий код в abc.java – Marcx