Примечание. Здесь следует мой вопрос: JDBC: разрывается ли соединение, если я теряю ссылку на объект соединения?
Теперь у меня есть созданный класс, чтобы я мог легко работать с JDBC для остальной части моего кода -
public class Functions {
private String DB_SERVER = "";
private String DB_NAME = "test";
private String DB_USERNAME = "root";
private String DB_PASSWORD = "password";
public Connection con;
public PreparedStatement ps;
public ResultSet rs;
public ResultSetMetaData rsmd;
public void connect()
throws java.io.FileNotFoundException, java.io.IOException,
SQLException, Exception {
String[] dbParms = Parameters.load();
DB_SERVER = dbParms[0];
DB_NAME = dbParms[1];
DB_USERNAME = dbParms[2];
DB_PASSWORD = dbParms[3];
// Connect.
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection("jdbc:mysql://"
+ DB_SERVER + "/"
+ DB_NAME, DB_USERNAME, DB_PASSWORD);
}
public void disconnect() throws SQLException {
// Close.
con.close();
}
}
Как видно Parameters.load()
обновляет параметры соединения из файла каждый раз, так что любые изменения к нему могут быть применены к следующему непосредственному соединению.
Пример этого класса в действии -
public static void add(String NAME)
throws java.io.FileNotFoundException, java.io.IOException, SQLException, Exception {
Functions dbf = new Functions();
dbf.connect();
String query = "INSERT INTO " + TABLE_NAME + "(" +
"NAME" +
") VALUES(?)";
PreparedStatement ps = dbf.con.prepareStatement(query);
ps.setString(1, NAME);
ps.executeUpdate();
dbf.disconnect();
}
Теперь вот проблема - для добавления записи в таблицу выше метод add()
откроет соединение, добавит запись - и затем вызовет disconnect()
.
Что делать, если я хочу получить идентификатор вставленной записи после того, как позвоню add()
, например:
Department.add("new dept");
int ID = getlastID();
Не возможно ли, чтобы между этими двумя операторами был вызван другой метод add ()?