2017-01-02 29 views
0

同じ属性を持つ2つのデータベーステーブルがあります。私はテーブルn 2番目の更新テーブルから読み取った2つのSQL文を使用したい。TableNameの代わりにSQLステートメントで変数を使用

String tableName = ""; 
String value = request.getParameter("PageId"); 
if(value=="Alflah"){ 
    tableName = "PARKTABLEONE"; 
} 
if(value=="ParkN"){ 
    tableName = "PARKTABLE"; 
} 

一つなステートメント:

ResultSet rs= st.executeQuery("Select * From " +tableName+ " WHERE ID = \'"+ login + "\' "); 

第二文:だから

String query = "update " + tableName + " set Place1 = ?, Place2 = ? WHERE ID = \'"+ login + "\'"; 

、私はここのTableName変数を使用したいです。 たとえば、tablenameがAlflahの場合、Alflahから読み上げます。 可能かどうかを確認します。私の誤りをどこで修正してください?

+2

を数えますか?試してみるとどうなりますか? –

+3

他のものとは別に、そのような文字列を比較するべきではありません。http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java –

+3

サイドノート: 'tableNameとは無関係です'では、あなたのコードは[SQLインジェクション攻撃](http://bobby-tables.com)と無害な非攻撃値に対して広く公開されています。パラメータ化されたクエリを使用します。 –

答えて

1

テーブル名が空で、17で始まる、それは空でなければならない場合は、列17での誤差を言う理由です、ちょうどので、問題は何文字

+0

はい、文字列の値が更新されていないため、 –

+0

が動作しています。以前のjspでtableNameの値を設定してから、この値をrequest.getParameter( "tableName"); –

関連する問題