The code as it stands is rather flaky, I'm afraid.
Look into connection pooling (docs on the tomcat site and many posts related to it on this list) and defensive programming (checking for null values etc, etc). Also, Wolfgang's advice is good: always close ResultSets and Statements after you're done with them (and connections for that matter).
HTH,
Jon
Maxime wrote:
Hello Everybody; I'am asking for help because I have a problem that it's making me crazy. To do some query to the Database, I am using a Class named DBConnection.
It's like around 1 week, I didn't do anything on the code (perhaps I did because it doesn't working now). Well... , in order to find the problem I did some test function, but I still can't find it. Here we go, it's not very long, it's just some basic code and 2 logs
This the JSP where my test start.
Test.jsp <HTML> <HEAD> <TITLE>DataBase Test!</TITLE> </HEAD>
DataBase Test Button <FORM ACTION="http://localhost:8080/Training/TEST2"> <INPUT TYPE="SUBMIT" VALUE = "test"> </FORM> DataBase Test Button2 <FORM ACTION="http://localhost/Training/TEST3"> <INPUT TYPE="SUBMIT" VALUE = "test"> </FORM>
</BODY> </HTML>
We have 2 button to access on servlet Test2 and Test3
Here they go :
TEST3.java :
package Training;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*; import java.sql.DriverManager;
public class TEST3 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
// New Instance : DBConnection
DBConnection db = new DBConnection();
String req ="Select * FROM User_Table";
try{
db.Connect();
out.println("<br> DRIVERS JDBC : OK!");
out.println("<br> Connexion TO DB : OK!");
ResultSet Result = db.QueryDataBase(req);
// This part was added to see if we can catch the total row int col = db.TotalRows(Result);
if (col == 0)
{
out.println("<br>Query to DB is not ok!<br>");
}
else{
out.println(col);
}
}
catch (ClassNotFoundException e) { out.println("PB with Drivers");
}
catch (Exception x) { out.println(x); }
} }
DBConnection.java
package Training;
import java.sql.*; import java.sql.DriverManager;
public class DBConnection{
Connection connection;
Statement stmt;
ResultSet result;
public DBConnection(){ }
public void Connect() throws Exception, SQLException{
String url = "jdbc:mysql://localhost:3306/HeroDB"; String user = "Login"; String password = "Password";
try { // Load JDBC Drivers
Class.forName("com.mysql.jdbc.Driver"); // make the connection with the database
The problem's right here:
Connection connection = DriverManager.getConnection(url,user,password);
}
catch(SQLException sqle){ System.out.println(sqle.getMessage());
}
catch(Exception e){ System.out.println("The Connection Failed !"+ e.getMessage()); }
}
public ResultSet QueryDataBase(String SQLFunc)throws SQLException, Exception{ try{
stmt = connection.createStatement(); result = stmt.executeQuery(SQLFunc); } catch(SQLException sqle){ System.out.println("Problem with getting Result1!"+ sqle.getMessage());
System.out.println("Problem with getting Result2!"+ sqle.getSQLState());
System.out.println("Problem with getting Result3!"+ sqle.getErrorCode());
}
catch(Exception e){ System.out.println("Problem with getting Result4!"+ e.getMessage());
}
return result; }
public int TotalRows (ResultSet rs) throws SQLException, Exception
{
int numRows = 0;
try{
rs.last();
numRows = rs.getRow();
rs.first();
}
catch(SQLException sqle)
{
System.out.println("Problem with getting Row1"+ sqle.getMessage());
System.out.println("Problem with getting Row2"+ sqle.getSQLState());
System.out.println("Problem with getting Row3"+ sqle.getErrorCode());
}
catch(Exception e){ System.out.println("Problem with getting getting Row4!"+ e.getMessage());
}
return numRows;
}
}
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]