This section describes how to create PreparedStatement objects with Parameters.
To make a PreparedStatement object more flexible, you add parameters to the embedded SQL statement
with question marks (?). Real values should be added before executing the PreparedStatement object.
Adding values to PreparedStatement parameters should be done by calling setXXX() methods in this format:
ps.setXXX(1, value);
ps.setXXX(2, value);
...
ps.setXXX(n, value);
// Sets value to the n-th parameter.
JDBC supports many setXXX() methods, one for each Java data type, so that you can set parameter values directly with the desired Java data types
without any conversion. Here is a list of setXXX() methods:
setArray() - Sets the value of the specified parameter as Java Array type.
setAsciiStream() - Sets the value of the specified parameter as a stream of ASCII characters.
setBigDecimal() - Sets the value of the specified parameter as java.sql.BigDecimal type.
setBinaryStream() - Sets the value of the specified parameter as a stream of bytes.
setByte() - Sets the value of the specified parameter as Java byte type.
setBlob() - Sets the value of the specified parameter as Java Blob type.
setBoolean() - Sets the value of the specified parameter as Java boolean type.
setBytes() - Sets the value of the specified parameter as Java byte[] type.
setCharacterStream() - Sets the value of the specified parameter as java.io.Reader type.
setClob() - Sets the value of the specified parameter as Java Clob type.
setDate() - Sets the value of the specified parameter as java.sql.Date type.
setDouble() - Sets the value of the specified parameter as Java double type.
setFloat() - Sets the value of the specified parameter as Java float type.
setInt() - Sets the value of the specified parameter as Java int type.
setLong() - Sets the value of the specified parameter as Java long type.
setNull() - Sets the value of the specified parameter as a null value.
setObject() - Sets the value of the specified parameter as Java Object type.
setRef() - Sets the value of the specified parameter as Java Ref type.
setShort() - Sets the value of the specified parameter as Java short type.
setString() - Sets the value of the specified parameter as Java String type.
setTime() - Sets the value of the specified parameter as java.sql.Time type.
setTimestamp() - Sets the value of the specified parameter as java.sql.Timestamp type.
Here is a sample program that created a PreparedStatement object with one parameter:
/**
* DerbyPreparedStatementParameter.java
* Copyright (c) 2007 by Dr. Herong Yang. All rights reserved.
*/
import java.util.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
public class DerbyPreparedStatementParameter {
public static void main(String [] args) {
Connection con = null;
try {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.fscontext.RefFSContextFactory");
env.put(Context.PROVIDER_URL, "file:/local/fscontext");
Context ctx = new InitialContext(env);
DataSource ds = (DataSource) ctx.lookup("DerbyTestDB");
con = ds.getConnection();
// PreparedStatement for SELECT statement with one parameter
PreparedStatement sta = con.prepareStatement(
"SELECT * FROM Profile WHERE ID = ?");
// Provide a value to the parameter
int id = 9;
sta.setInt(1,id);
// Execute the PreparedStatement as a query
ResultSet res = sta.executeQuery();
// Get values out of the ResultSet
res.next();
String firstName = res.getString("FirstName");
String lastName = res.getString("LastName");
System.out.println("User ID "+id+": "+firstName+' '+lastName);
// Close ResultSet and PreparedStatement
res.close();
sta.close();
con.close();
} catch (Exception e) {
System.err.println("Exception: "+e.getMessage());
e.printStackTrace();
}
}
}