2017-07-25 5 views
0

を実行しますこのように:あなたはPreparedStatementためsetXxx方法(複数可)を含むテーブル名とカラム名を設定することはできません https://pastebin.com/BMAmN4Xhプリペアドステートメントは、私がデータベースから文字列を取得するための簡単な方法を書かれているクエリエラー(com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException)

+0

があなたのテーブル名ですが、バランスのですか?あなたのデータベーステーブルのスナップショットを提供することができます –

+0

私のテーブル名はバランスではなく、経済的です。以下はデータベースのスクリーンショットです:https://image.prntscr.com/image/WYs3J5XkT3_oSvK2EI5jfg.png –

+0

削除 ';'だから "SELECT?FROM?WHERE id =?" – resource8218

答えて

0

coreMySQL.getUserString(1, "economy", "balance");

私はこのエラーを取得します。これは値の設定にのみ使用できます。ただし、例えば、テーブル名とカラム名を置換する置き換える:として

String query = SELECT <column> FROM <table> WHERE id=?; 
String sql = query.replaceAll("<column>", column).replaceAll("<table>", table); 
PreparedStatement preparedStatement = getConnection().prepareStatement(sql); 
preparedStatement.setInt(1, id); 
ResultSet resultSet = preparedStatement.executeQuery(); 
while (resultSet.next()) { 
    output = resultSet.getString(column); 
} 
+0

ありがとうございました。 –

+0

@blablamuhahaあなたが助けてくれたら、答えを受け入れることができます。 –

+0

これは私の初めてのstackoverflowです、どうすればいいですか? –

0

は、クエリテンプレートを定義する簡単なStringを行うことができます

String queryTemplate = "SELECT %s FROM %s where id = ?;"; 

// Inside Function: 

PreparedStatement preparedStatement = getConnection().prepareStatement(String.format(template, column, table)); 
preparedStatement.setInt(1, id); 
ResultSet resultSet = preparedStatement.executeQuery(); 
関連する問題