JDBC Tutorials - Herong's Tutorial Notes
Dr. Herong Yang, Version 2.11

PreparedStatement with Parameters

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:

/**
 * OraclePreparedStatementParameter.java
 * Copyright (c) 2007 by Dr. Herong Yang. All rights reserved.
 */
import java.sql.*;
public class OraclePreparedStatementParameter {
  public static void main(String [] args) {
    Connection con = null;
    try {
      oracle.jdbc.pool.OracleDataSource ds 
        = new oracle.jdbc.pool.OracleDataSource();
      ds.setDriverType("thin");
      ds.setServerName("localhost");
      ds.setPortNumber(1521);
      ds.setDatabaseName("XE");
      ds.setUser("Herong");
      ds.setPassword("TopSecret");
      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 = 19;
      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();
    }
  }
}

Output of the program confirms that the PreparedStatement object worked correctly:

C:\>javac -cp .;\local\lib\ojdbc14.jar 
  OraclePreparedStatementParameter.java

C:\>java -cp .;\local\lib\ojdbc14.jar
  OraclePreparedStatementParameter

User ID 19: 2d4 871a4

Table of Contents

 About This Book

 JDBC (Java Database Connectivity) Introduction

 Downloading and Installing JDK - Java SE

 Installing and Running Java DB - Derby

 Derby (Java DB) JDBC Driver

 Derby (Java DB) JDBC DataSource Objects

 Java DB (Derby) - DML Statements

 Java DB (Derby) - ResultSet Objects of Queries

 Java DB (Derby) - PreparedStatement

 MySQL Installation on Windows

 MySQL JDBC Driver (MySQL Connector/J)

 MySQL - PreparedStatement

 MySQL - Reference Implementation of JdbcRowSet

 MySQL - JBDC CallableStatement

 MySQL CLOB (Character Large Object) - TEXT

 MySQL BLOB (Binary Large Object) - BLOB

 Oracle Express Edition Installation on Windows

 Oracle JDBC Drivers

 Oracle - Reference Implementation of JdbcRowSet

Oracle - PreparedStatement

 PreparedStatement Overview

PreparedStatement with Parameters

 PreparedStatement in Batch Mode

 Performance of Inserting Rows with a PreparedStatement

 Performance of Inserting Rows with a Regular Statement

 Performance of Inserting Rows with a ResultSet

 Oracle - JBDC CallableStatement

 Oracle CLOB (Character Large Object) - TEXT

 Oracle BLOB (Binary Large Object) - BLOB

 Microsoft SQL Server 2005 Express Edition

 Microsoft JDBC Driver for SQL Server - sqljdbc.jar

 Microsoft JDBC Driver - Query Statements and Result Sets

 Microsoft JDBC Driver - DatabaseMetaData Object

 Microsoft JDBC Driver - DDL Statements

 Microsoft JDBC Driver - DML Statements

 SQL Server - PreparedStatement

 SQL Server CLOB (Character Large Object) - TEXT

 SQL Server BLOB (Binary Large Object) - BLOB

 JDBC-ODBC Bridge Driver - sun.jdbc.odbc.JdbcOdbcDriver

 JDBC-ODBC Bridge Driver - Flat Text Files

 JDBC-ODBC Bridge Driver - MS Access

 JDBC-ODBC Bridge Driver - MS SQL Server

 Summary of JDBC Drivers and Database Servers

 Additional Tutorial Notes to Be Added

 References

 PDF Printing Version

Dr. Herong Yang, updated in 2007
PreparedStatement with Parameters