关于条件查询中赋值

String TempStr = " SELECT INFO_GUID, INFO_ID, INFO_NAME, INFO_DESC FROM INFO_MESSAGE";

StringBuffer SQLWhere = new StringBuffer();

SQLWhere.append(" WHERE 1 = 1 AND");

if(INFO_ID ==null || INFO_ID.equals("")){
}else{
SQLWhere.append(" AND INFO_ID =? ");
}

if(INFO_NAME ==null || INFO_NAME.equals("")){
}else{
SQLWhere.append(" AND INFO_NAME =? ");
}

if(INFO_DESC ==null || INFO_DESC.equals("")){
}else{
SQLWhere.append(" AND INFO_DESC=? ");
}
String SQLStr = TempStr + SQLWhere;
PreparedStatement pstmt = conn.prepareStatement(SQLStr);

到这边 我遇到一个 问题
我怎么知道 索引 给 对应的占位符 赋值

如果 三个条件都有值的话
pstmt.setString(1, "ID");
pstmt.setString(2, "NAME");
pstmt.setString(3, "Desc");

但如果 只有 其中的两个 怎么办 各位有空 帮忙 看看 知道怎么解决的 告诉我一下 非常谢谢!

[quote][code="java"]String TempStr = " SELECT INFO_GUID, INFO_ID, INFO_NAME, INFO_DESC FROM INFO_MESSAGE";

StringBuffer SQLWhere = new StringBuffer();

SQLWhere.append(" WHERE 1 = 1 AND");

if(INFO_ID ==null || INFO_ID.equals("")){
}else{
SQLWhere.append(" AND INFO_ID =? ");
}

if(INFO_NAME ==null || INFO_NAME.equals("")){
}else{
SQLWhere.append(" AND INFO_NAME =? ");
}

if(INFO_DESC ==null || INFO_DESC.equals("")){
}else{
SQLWhere.append(" AND INFO_DESC=? ");
}
String SQLStr = TempStr + SQLWhere;
PreparedStatement pstmt = conn.prepareStatement(SQLStr); [/code][/quote]
[quote][code="java"]

int i=1;
if(!(INFO_ID ==null || INFO_ID.equals(""))){
pstmt.setString(i++, "ID");
}
if(!(INFO_NAME ==null || INFO_NAME.equals(""))){
pstmt.setString(i++, "INFO_NAME");
}
……
[/code][/quote]