2017-09-02 89 views
1

我有这样一个与Oracle的连接:爪哇 - 如何传递参数的Oracle SQL查询散装

Connection con=getConnection(); 
String query="select ?, ? from my_table"; 
PreparedStatement p=con.prepareStatement(query); 
p.setString(1, "id"); 
p.setString(2, "lastName "); 
ResultSet rs=p.executeQuery(); 

一切都OK了这里,但我'不知道如何做这个的时候,你没有固定数量的参数你想选择。

例如,在上面,我只想选择'id'和'lastName'。但是这些参数取自不同的Java方法,并取决于方法可以返回不同数量的参数,我想将其传递给我的SQL选择。

我不知道参数,所以一旦我只能得到'id'和'lastName',但下一次'id','firstName','地址'和'城市'。然后我想将它们传递给SQL查询。 任何人都可以告诉我如何在这种情况下使用sql查询参数?

+0

你期望比动态查询建筑以外的东西? –

回答

1

当你不知道你需要多少参数。然后创建一个接受String数组/列表的程序,然后加入他们的逗号分隔符。这应该可以解决你的问题。

例如

String paramsList = new String[]{"id", "first_name", "last_name"}; 

如果您正在使用Java8你可以使用String.join,如:

String params = String.join(",", paramsList); 

然后写你的SQL语句就像

String query="select " + params + " from my_table";