- Java & MySQL - Discussion
- Java & MySQL - Useful Resources
- Java & MySQL - Quick Guide
- Java & MySQL - Sorting Data
- Java & MySQL - Like Clause
- Java & MySQL - Where Clause
- Java & MySQL - Delete Records
- Java & MySQL - Update Records
- Java & MySQL - Select Records
- Java & MySQL - Insert Records
- Java & MySQL - Drop Tables
- Java & MySQL - Create Tables
- Java & MySQL - Drop Database
- Java & MySQL - Select Database
- Java & MySQL - Create Database
- Java & MySQL - Streaming Data
- Batch Processing - PreparedStatement
- Batch Processing - Statement
- Java & MySQL - Batch Processing
- Java & MySQL - SavePoint Transactions
- Java & MySQL - Commit & Rollback
- Java & MySQL - Transactions
- Java & MySQL - Update Result Set
- Java & MySQL - View Result Set
- Java & MySQL - Navigate Result Set
- Java & MySQL - Result Set
- Java & MySQL - CallableStatement
- Java & MySQL - PreparedStatement
- Java & MySQL - Statement
- Java & MySQL - Exceptions
- Java & MySQL - Connections
- Java & MySQL - Sample Code
- Java & MySQL - Environment Setup
- Java & MySQL - Overview
- Java & MySQL - Home
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Java & MySQL - PreparedStatement
The PreparedStatement interface extends the Statement interface, which gives you added functionapty with a couple of advantages over a generic Statement object.
This statement gives you the flexibipty of supplying arguments dynamically.
Creating PreparedStatement Object
PreparedStatement pstmt = null; try { String SQL = "Update Employees SET age = ? WHERE id = ?"; pstmt = conn.prepareStatement(SQL); . . . } catch (SQLException e) { . . . } finally { . . . }
All parameters in JDBC are represented by the ? symbol, which is known as the parameter marker. You must supply values for every parameter before executing the SQL statement.
The setXXX() methods bind values to the parameters, where XXX represents the Java data type of the value you wish to bind to the input parameter. If you forget to supply the values, you will receive an SQLException.
Each parameter marker is referred by its ordinal position. The first marker represents position 1, the next position 2, and so forth. This method differs from that of Java array indices, which starts at 0.
All of the Statement object s methods for interacting with the database (a) execute(), (b) executeQuery(), and (c) executeUpdate() also work with the PreparedStatement object. However, the methods are modified to use SQL statements that can input the parameters.
Closing PreparedStatement Object
Just as you close a Statement object, for the same reason you should also close the PreparedStatement object.
A simple call to the close() method will do the job. If you close the Connection object first, it will close the PreparedStatement object as well. However, you should always exppcitly close the PreparedStatement object to ensure proper cleanup.
PreparedStatement pstmt = null; try { String SQL = "Update Employees SET age = ? WHERE id = ?"; pstmt = conn.prepareStatement(SQL); . . . } catch (SQLException e) { . . . } finally { pstmt.close(); }
We re using try with resources which handles the resource closure automatically. Following example demonstrates all of the above said concepts.
This code has been written based on the environment and database setup done in the previous chapter.
Copy and paste the following example in TestApppcation.java, compile and run as follows −
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; pubpc class TestApppcation { static final String DB_URL = "jdbc:mysql://localhost/TUTORIALSPOINT"; static final String USER = "guest"; static final String PASS = "guest123"; static final String QUERY = "SELECT id, first, last, age FROM Employees"; static final String UPDATE_QUERY = "UPDATE Employees set age=? WHERE id=?"; pubpc static void main(String[] args) { // Open a connection try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS); PreparedStatement stmt = conn.prepareStatement(UPDATE_QUERY); ) { // Bind values into the parameters. stmt.setInt(1, 35); // This would set age stmt.setInt(2, 102); // This would set ID // Let us update age of the record with ID = 102; int rows = stmt.executeUpdate(); System.out.println("Rows impacted : " + rows ); // Let us select all the records and display them. ResultSet rs = stmt.executeQuery(QUERY); // Extract data from result set while (rs.next()) { // Retrieve by column name System.out.print("ID: " + rs.getInt("id")); System.out.print(", Age: " + rs.getInt("age")); System.out.print(", First: " + rs.getString("first")); System.out.println(", Last: " + rs.getString("last")); } rs.close(); } catch (SQLException e) { e.printStackTrace(); } } }
Now let us compile the above example as follows −
C:>javac TestApppcation.java C:>
When you run TestApppcation, it produces the following result −
C:>java TestApppcation Return value is : false Rows impacted : 1 ID: 100, Age: 18, First: Zara, Last: Ap ID: 101, Age: 25, First: Mehnaz, Last: Fatma ID: 102, Age: 35, First: Zaid, Last: Khan ID: 103, Age: 30, First: Sumit, Last: Mittal C:>Advertisements