Tratarea exceptiilor - JDBC

Cunoscutul limbaj de programare Java a fost creat să întrunească câteva caracteristici de bază, printre care OOP, să fie independent de arhitectură (portabilitatea), să fie dinamic şi securizat. Aici vom vorbi despre Java SE, Java ME, respectiv Java EE. Dacă acesta este domeniul tău de interes, aceasta este secţiunea potrivită pentru tine.

Tratarea exceptiilor - JDBC

Postby valentin » 25 Jan 2011, 21:29

  1. import java.sql.*;
  2. import java.util.Properties;
  3.  
  4. public class ConnectionManager
  5. {
  6.   private static final String dbClassName = "com.mysql.jdbc.Driver";
  7.   private static String CONNECTION;
  8.   public void ConnectionManager(final String database, final String username, final String password)    {
  9.       CONNECTION = "jdbc:mysql://127.0.0.1/" + database;
  10.       Class.forName(dbClassName);
  11.       Properties connectionProperties = new Properties();
  12.       connectionProperties.put("user", username);
  13.       connectionProperties.put("password", password);
  14.       Connection connect = DriverManager.getConnection(CONNECTION,connectionProperties);
  15.   }
  16.  public void closeConnection() {
  17.      connect.close();
  18.  }
  19.  protected void finalize() {
  20.      try {
  21.          closeConnection();
  22.      }
  23.      finally {
  24.          connect.close();
  25.      }
  26.  }
  27. }
  28.  
  29.  


Unde ar trebui sa tratez exceptiile: in constructor sau atunci cand folosesc obiectul de tip ConnectionManager ?

Alte sugestii, probleme, optimizari pentru clasa de mai sus ?
0,0p / 0 votes
User avatar
valentin
Bit
 
Joined: 22 Jan 2011
Status: 0

Re: Tratarea exceptiilor - JDBC

Postby smith » 25 Jan 2011, 22:10

Dacă în constructorul tău ar putea să apară excepții (dintr-o cauză oarecare -imposibilitate de conectare etc.) atunci cred că ar trebui să fie transmise mai departe cu ajutorul keywordului throws. Când vei folosi obiecte de tipul ConnectionManager, la construcția lor vor putea să apară probleme, deci construcția unui obiect ConnectionManager cred că ar fi bine să fie într-un bloc try.
De asemenea cred că metoda finalize sau closeConnection ar trebui să verifice dacă conexiunea EXISTĂ și doar în cazul ăla să închidă conexiunea.
-dacă greșesc, să mă corecteze cineva.

LE:
Am băgat codul în eclipse și îmi apar niște probleme. În primul rând, nu înțeleg de ce constructorul tău returnează void.
Iată cum cred că ar trebui să arate codul:

  1. import java.sql.*;
  2. import java.util.Properties;
  3.  
  4. public class ConnectionManager{
  5.     private static final String dbClassName = "com.mysql.jdbc.Driver";
  6.     private static String CONNECTION;
  7.     private Connection connect;
  8.  
  9.     public ConnectionManager(final String database, final String username,
  10.             final String password) throws ClassNotFoundException, SQLException {
  11.         CONNECTION = "jdbc:mysql://127.0.0.1/" + database;
  12.         Class.forName(dbClassName);
  13.         Properties connectionProperties = new Properties();
  14.         connectionProperties.put("user", username);
  15.         connectionProperties.put("password", password);
  16.         Connection connect = DriverManager.getConnection(CONNECTION,
  17.                 connectionProperties);
  18.     }
  19.  
  20.     public void closeConnection() throws SQLException {
  21.         if (!connect.isClosed())
  22.             connect.close();
  23.     }
  24.  
  25.     protected void finalize() throws SQLException {
  26.         try {
  27.             closeConnection();
  28.         } finally {
  29.             //eliberare memorie obiect ?
  30.         }
  31.    
0,0p / 0 votes
Ilea Cristian
User avatar
smith
Enum
 
Joined: 29 Dec 2009
Location: Cluj-Napoca
Status: 82

Re: Tratarea exceptiilor - JDBC

Postby morpheus » 25 Jan 2011, 22:17

In plus, nu ar trebui sa pui niciodata codul care inchide conexiunea catre baza de date in finalize().
Ar trebui sa fie intr-o metoda chemata de tine din codul client, recomandabil intr-un bloc finally.
0,0p / 0 votes
User avatar
morpheus
Word
 
Joined: 30 Dec 2009
Location: Bucharest, Romania
Status: 54.84

Re: Tratarea exceptiilor - JDBC

Postby valentin » 26 Jan 2011, 19:43

^ si ^^: Multumesc mult !
0,0p / 0 votes
User avatar
valentin
Bit
 
Joined: 22 Jan 2011
Status: 0


Return to Java

Who is online

Users browsing this forum: No registered users and 0 guests