我有一个方法' getAllIDs()
'用于获取数据库中特定表的 ID。它在我的项目中被许多方法使用。
public static int[] getAllIDs (String TableName, String WhereClause, String trxName)
{
ArrayList<Integer> list = new ArrayList<Integer>();
StringBuffer sql = new StringBuffer("SELECT ");
sql.append(TableName).append("_ID FROM ").append(TableName);
if (WhereClause != null && WhereClause.length() > 0)
sql.append(" WHERE ").append(WhereClause);
PreparedStatement pstmt = null;
ResultSet rs = null;
try
{
pstmt = DB.prepareStatement(sql.toString(), trxName);
rs = pstmt.executeQuery();
while (rs.next())
list.add(new Integer(rs.getInt(1)));
}
}
Whereclause 是查询的条件部分。由于这个 whereclause,有可能进行 sql 注入。所以我需要修改这个方法来使用prepared statement参数设置来设置参数。我遇到的问题是因为 ' getAllIDs()
' 不知道每个 where 子句有多少参数。
每个 where 子句的参数都不同,它可以是任意数字。对于某些类,参数将为 3,对于某些类,参数为 2,等等具有不同的数据类型。那么我如何使用 setstring()、setint() 等。用我发布的代码解释一下。