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インジェクションの可能性があります。したがって、このメソッドを変更して、プリペアドステートメントのパラメーター設定を使用してパラメーターを設定する必要があります。私が直面した問題は、' getAllIDs()
'各whereclauseのパラメーターの数がわからないためです。
パラメータはwhereclauseごとに異なり、任意の数にすることができます。一部のクラスでは、パラメーターは3になり、一部のクラスでは2になり、データ型が異なります。では、setstring()、setint()などをどのように使用できますか。投稿したコードで説明してください。