Java JDBC IN Clause Example with PreparedStatement MySQL

Post Banner

As you must be aware that createArrayOf() method from the Connection Interface will give you a java.sql.SQLFeatureNotSupportedException exception. One of the "not so ideal" ways to achieve the IN Clause in MySQL is to dynamically create the number of parameters as ? in your IN Clause.

import java.sql.Array;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

public class JDBCInClauseExample {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {

        //The elements for IN Clause
        ArrayList<String> studentNames = new ArrayList<>();
        //Create an array of same size
        String[] arrayOfQuestionMarks = new String[studentNames.size()];

        //Create a array of question marks ?
        for(int i=0;i< studentNames.size();i++) {
            arrayOfQuestionMarks[i] = "?";

        //Create a string of question marks ?
        String inClause = String.join(",", arrayOfQuestionMarks);
        String url ="jdbc:mysql://localhost:3306/my_uat";
        String userName="root";
        String password ="root123";
        String selectQuery ="Select * from students where student_name in ("+inClause+")";
        Connection connection = DriverManager.getConnection(url,userName,password);
        PreparedStatement preparedStatement = connection.prepareStatement(selectQuery);
        for(int i=0;i< studentNames.size();i++) {
            preparedStatement.setString(i+1, studentNames.get(i));

        ResultSet resultSet = preparedStatement.executeQuery();

        while( {

1 Harry 1997-01-03 00:00:00 London
2 Ron 1999-03-19 00:00:00 Paris

Facing issues? Have Questions? Post them here! I am happy to answer!

Author Info:

Rakesh (He/Him) has over 14+ years of experience in Web and Application development. He is the author of insightful How-To articles for Code2care.

Follow him on: X

You can also reach out to him via e-mail:

Copyright © Code2care 2024 | Privacy Policy | About Us | Contact Us | Sitemap