PreparedStatement IN clause alternatives?

前端 未结 30 3879
情歌与酒
情歌与酒 2020-11-21 05:19

What are the best workarounds for using a SQL IN clause with instances of java.sql.PreparedStatement, which is not supported for multiple values du

30条回答
  •  无人及你
    2020-11-21 05:40

    After examining various solutions in different forums and not finding a good solution, I feel the below hack I came up with, is the easiest to follow and code:

    Example: Suppose you have multiple parameters to pass in the 'IN' clause. Just put a dummy String inside the 'IN' clause, say, "PARAM" do denote the list of parameters that will be coming in the place of this dummy String.

        select * from TABLE_A where ATTR IN (PARAM);
    

    You can collect all the parameters into a single String variable in your Java code. This can be done as follows:

        String param1 = "X";
        String param2 = "Y";
        String param1 = param1.append(",").append(param2);
    

    You can append all your parameters separated by commas into a single String variable, 'param1', in our case.

    After collecting all the parameters into a single String you can just replace the dummy text in your query, i.e., "PARAM" in this case, with the parameter String, i.e., param1. Here is what you need to do:

        String query = query.replaceFirst("PARAM",param1); where we have the value of query as 
    
        query = "select * from TABLE_A where ATTR IN (PARAM)";
    

    You can now execute your query using the executeQuery() method. Just make sure that you don't have the word "PARAM" in your query anywhere. You can use a combination of special characters and alphabets instead of the word "PARAM" in order to make sure that there is no possibility of such a word coming in the query. Hope you got the solution.

    Note: Though this is not a prepared query, it does the work that I wanted my code to do.

提交回复
热议问题