2017-07-11 16 views
0

以下のコードを使用して「エラー:java.sql.SQLException:無効な列インデックス」というエラーが表示されます。ここで間違っているところで助けてください。JSPコードの「エラー:java.sql.SQLException:無効な列インデックス」

String SEARCH_SQL_COUNT = "SELECT COUNT(*) FROM (
    SELECT AD_TITLE,DESCRIPTION,STATE_NAME,CITY_NAME,CATEGORY,SUBCATEGORY 
    FROM PERSONAL_INFO UNION ALL 
    SELECT AD_TITLE,DESCRIPTION,STATE_NAME,CITY_NAME,CATEGORY,SUBCATEGORY 
    FROM ELEC_AUTO_MERC UNION ALL 
    SELECT AD_TITLE,DESCRIPTION,STATE_NAME,CITY_NAME,CATEGORY,SUBCATEGORY 
    FROM MISSING_PERSON_INFO UNION ALL 
    SELECT AD_TITLE,DESCRIPTION,STATE_NAME,CITY_NAME,CATEGORY,SUBCATEGORY 
    FROM PETS_INFO UNION ALL 
    SELECT AD_TITLE,DESCRIPTION,STATE_NAME,CITY_NAME,CATEGORY,SUBCATEGORY 
    FROM REAL_ESTATE UNION ALL 
    SELECT AD_TITLE,DESCRIPTION,STATE_NAME,CITY_NAME,CATEGORY,SUBCATEGORY 
    FROM SERVICES_INFO) 
    WHERE UPPER(AD_TITLE) LIKE UPPER('%?%') 
    OR UPPER(DESCRIPTION) LIKE UPPER('%?%') 
    OR UPPER(STATE_NAME) LIKE UPPER('%?%') 
    OR UPPER(CITY_NAME) LIKE UPPER('%?%') 
    OR UPPER(CATEGORY) LIKE UPPER('%?%') 
    OR UPPER(SUBCATEGORY) LIKE UPPER('%?%')"; 

int ad_count=0; 

PreparedStatement st_fetch_product_count_1 = conn.prepareStatement(SEARCH_SQL_COUNT); 
st_fetch_product_count_1.setString(1,qs_keyword); 
st_fetch_product_count_1.setString(2,qs_keyword); 
st_fetch_product_count_1.setString(3,qs_keyword); 
st_fetch_product_count_1.setString(4,qs_keyword); 
st_fetch_product_count_1.setString(5,qs_keyword); 
st_fetch_product_count_1.setString(6,qs_keyword); 

ResultSet rs_fetch_product_count_1 = st_fetch_product_count_1.executeQuery(); 

答えて

1

SELECT COUNT(*)ステートメントを実行しています。このような声明は、1行と、の単一の列を含んでいます。 setString()コールでは6列が必要なので、インデックス2は既に範囲外です。

また、setString()を読み取り専用の結果セットに使用しようとしていますが、これは別の問題です。

+0

SQLインジェクションを防ぐためにSQLでパラメータを渡す方法 –

関連する問題