Это очень плохо (тм):
public DBConnection() {
try
{
conn = DriverManager.getConnection(this.url, "test", "test");
st = conn.createStatement();
}
catch (SQLException ex)
{
System.out.print("SQL EXCEPTION");
}
}
Не не ловить и игнорировать подобные исключения.Есть очень веская причина.В этом случае, если ваш конструктор потерпит неудачу из-за исключения, весь объект DbConnection
будет считаться бесполезным, так как поле st
будет нулевым.Тем не менее, поскольку код, который создает экземпляр DbConnection
, не знает, что это произошло, вы продолжаете его использовать и в итоге получаете исключение нулевого указателя.
Если конструктор DbConnection
вызывает исключение,вам нужно выбросить это исключение из конструктора, чтобы ваш код обработал исключение:
public class DBConnection {
private static final String URL = "jdbc:derby://localhost:1527/Bank";
private final Connection conn;
private final Statement st;
public DBConnection() throws SQLException {
conn = DriverManager.getConnection(URL, "test", "test");
st = conn.createStatement();
}
public Statement getSt() {
return st;
}
}
Обратите также внимание на поля final
.Это дает вам гарантию времени компиляции, что что-то будет присвоено этим полям.