import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class DemoPreparedStatementSetRef {
public static Connection getConnection() throws Exception {
String driver = "org.gjt.mm.mysql.Driver";
String url = "jdbc:mysql://localhost/databaseName";
String username = "root";
String password = "root";
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, username, password);
return conn;
}
public static void main(String[] args) throws Exception {
String deptName = "oldName";
String newDeptName = "newName";
ResultSet rs = null;
Connection conn = null;
PreparedStatement pstmt = null;
PreparedStatement pstmt2 = null;
try {
conn = getConnection();
// prepare query for getting a REF object and PrepareStatement object
String refQuery = "select manager from dept_table where dept_name=?";
pstmt = conn.prepareStatement(refQuery);
pstmt.setString(1, deptName);
rs = pstmt.executeQuery();
java.sql.Ref ref = null;
if (rs.next()) {
ref = rs.getRef(1);
}
if (ref == null) {
System.out.println("error: could not get a reference for manager.");
System.exit(1);
}
String query = "INSERT INTO dept_table(dept_name, manager)values(?, ?)";
pstmt2 = conn.prepareStatement(query);
pstmt2.setString(1, newDeptName);
pstmt2.setRef(2, ref);
// execute query, and return number of rows created
int rowCount = pstmt2.executeUpdate();
System.out.println("rowCount=" + rowCount);
} finally {
pstmt.close();
pstmt2.close();
conn.close();
}
}
}