我正在尝试在ORACLE sql代码中创建条件语句 我在java中有一个带2个参数的函数。 getchildren(child1,child2) ..此函数的参数用于创建查询语句
public ResultSet getchildren(String Child1, String child2) throws SQLException
{
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
query ="select * from table1
if child1 is not null and child2 is null
{ where child1 = 1 }
else if child2 is not null AND child1 is null
{where child2 = 2}
else
{//some other where statment }
";
System.out.println("\nExecuting query: " + query);
rset = stmt.executeQuery(query);
return rset;
}
这显然是伪代码。 我需要帮助为 where 子句创建条件执行,以便在条件有效时执行每个“where”子句。我尝试了类似于我在那里的东西,但没有运气。
答案 0 :(得分:3)
使用StringBuilder动态构建查询。
StringBuilder queryBuilder = new StringBuilder();
queryBuilder.append("select * from table1 ");
if ( child1 != null && child2 == null)
queryBuilder.append(" where child1 = 1 ");
else if ( child2 != null && child1 == null)
queryBuilder.append(" where child2 = 1 ");
else
queryBuilder.append(" where bla ");
// Execute queryBuilder.toString();
rset = stmt.executeQuery(queryBuilder.toString());
答案 1 :(得分:1)
使用StringBuilder
逐个构建查询。首先附加"select * from table1 where "
。然后用普通Java编写if
语句,并在每个块中添加相应的子句。