2016-10-13 3 views
0
public List<User> arrangeUsers(String option) { 
    String query = ""; 
    if (option.equals("lastNameAsc")) { 
     query = "SELECT * FROM ? ORDER BY lastName ASC;"; 
    } else if (option.equals("lastNameDesc")) { 
     query = "SELECT * FROM ? ORDER BY lastName DESC;"; 
    } else if (option.equals("dobAsc")) { 
     query = "SELECT * FROM ? ORDER BY dateOfBirth ASC;"; 
    } else if (option.equals("dobDesc")) { 
     query = "SELECT * FROM ? ORDER BY dateOfBirth DESC;"; 
    } 
    boolean listChoice; 
    try (Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); 
      PreparedStatement stmt = conn.prepareStatement(query);) { 
     if (searchList.size() > 0) { 
      stmt.setString(1, "search_results"); 
      searchList.clear(); 
      listChoice = true; 
     } else { 
      stmt.setString(1, "users"); 
      users.clear(); 
      listChoice = false; 
     } 
     ResultSet result = stmt.executeQuery(); 
     while (result.next()) { 
      User user = new User(); 
      user.setFirstName(result.getString("firstName")); 
      user.setLastName(result.getString("lastName")); 
      user.setDob(result.getDate("dateOfBirth")); 
      user.setPhoneNumber(result.getString("phoneNumber")); 
      user.setEmail(result.getString("email")); 
      user.setUserID(result.getInt("id")); 
      if (listChoice) { 
       searchList.add(user); 
      } else { 
       users.add(user); 
      } 

     } 
    } catch (SQLException sqle) { 
     System.err.println(sqle); 
     sqle.printStackTrace(); 
     return null; 
    } 
    if (listChoice) { 
     return searchList; 
    } else { 
     return users; 
    } 
} 

は、上記の方法は、エラーを返す:エラー:JavaベースのWebアプリでMySQLSyntaxErrorException

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''users' ORDER BY lastName DESC' at line 1 " error.

方法は、ユーザのリスト(テーブル)を配置することになっていることにより、必要な順序に従ってクライアント。エラーメッセージの原因は何ですか?必要に応じて追加の詳細を記入する用意ができています。

+0

「SELECT * FROM」のテーブル名はどこですか? –

+0

表名にバインド変数を使用することはできません。 – Mat

+0

テーブルに名前がありません – ItamarG3

答えて

0

パラメータとしてテーブル名を使用することはできません。ハードコーディングされている必要があります。

public List<User> arrangeUsers(String option) { 
    String query = "SELECT * FROM "; 
    if (searchList.size() > 0) { 
     query += "search_results "; 
     searchList.clear(); 
     listChoice = true; 
    } else { 
     query += "users "; 
     users.clear(); 
     listChoice = false; 
    } 

    if (option.equals("lastNameAsc")) { 
     query += "ORDER BY lastName ASC;"; 
    } else if (option.equals("lastNameDesc")) { 
     query += "ORDER BY lastName DESC;"; 
    } else if (option.equals("dobAsc")) { 
     query += "ORDER BY dateOfBirth ASC;"; 
    } else if (option.equals("dobDesc")) { 
     query += "ORDER BY dateOfBirth DESC;"; 
    } 
    boolean listChoice; 
    try (Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); 
      PreparedStatement stmt = conn.prepareStatement(query);) { 
     ResultSet result = stmt.executeQuery(); 
     while (result.next()) { 
      User user = new User(); 
      user.setFirstName(result.getString("firstName")); 
      user.setLastName(result.getString("lastName")); 
      user.setDob(result.getDate("dateOfBirth")); 
      user.setPhoneNumber(result.getString("phoneNumber")); 
      user.setEmail(result.getString("email")); 
      user.setUserID(result.getInt("id")); 
      if (listChoice) { 
       searchList.add(user); 
      } else { 
       users.add(user); 
      } 

     } 
    } catch (SQLException sqle) { 
     System.err.println(sqle); 
     sqle.printStackTrace(); 
     return null; 
    } 
    if (listChoice) { 
     return searchList; 
    } else { 
     return users; 
    } 
} 

希望することができます。

関連する問題