Java PreparedStatement.setRef(int parameterIndex, Ref x)
Syntax
PreparedStatement.setRef(int parameterIndex, Ref x) has the following syntax.
void setRef(int parameterIndex, Ref x) throws SQLException
Example
In the following code shows how to use PreparedStatement.setRef(int parameterIndex, Ref x) method.
/*from w ww . jav a 2 s . c o m*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Main {
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();
}
}
}