注意 - 这是我的问题: JDBC: Does the connection break if i lose reference to the Connection object?
现在我已经创建了一个类,所以我可以轻松地处理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()
之后获取插入记录的ID,那会怎么样:
Department.add("new dept");
int ID = getlastID();
是否可能在这两个语句之间调用另一个add()?
答案 0 :(得分:1)
可能......您可能需要考虑重构代码。
Baby关闭连接之前,在add方法中的变量中检索并存储id,更改签名并返回id。
答案 1 :(得分:0)
只要您保持连接打开,在语句之间执行另一个添加并不重要。 last_insert_id
函数获取在同一数据库会话中创建的最后一个ID,即使用相同的连接。
因此,您必须更改您的代码,以便您不必关闭并重新打开添加记录和获取ID之间的连接。