MySQL заявление ГДЕ как неизвестно

У меня есть это заявление SQL:

selectAllUsersByCriteria = connection.prepareStatement ("SELECT * FROM Users WHERE? =?");

И следующий метод запуска оператора:

public ArrayList<User> getUsersByCriteria(String 1criteria, String 2criteria)
{
    ArrayList<User> results = null;
    ResultSet resultSet = null;
    try 
    {
        selectAllUsersByCriteria.setString( 1, 1criteria);
        selectAllUsersByCriteria.setString( 2, 2criteria);

        // executeQuery returns ResultSet containing matching entries
        resultSet = selectAllUsersByCriteria.executeQuery(); 

        results = new ArrayList< User >();

        while ( resultSet.next() )
        {
            results.add( new User( resultSet.getString( "userName" ),
                    resultSet.getString( "Password" ),
                    resultSet.getBoolean( "AdminRights" ),
                    resultSet.getDouble( "Balance" )
                    ) );
        } // end while
    } // end try
    catch ( SQLException sqlException )
    {
        sqlException.printStackTrace();
    } // end catch
    finally
    {
        try 
        {
            resultSet.close();
        } // end try
        catch ( SQLException sqlException )
        {
            sqlException.printStackTrace();         
            close();
        } // end catch
    } // end finally

    return results;
} 

Не работает Я полагаю, это первое? это проблема. Разве нельзя установить ГДЕ? как?. Можно ли решить по-другому.

Это таблица, которую я хочу показать, но она должна показывать только то, что пользователи следуют ей и отвечают этим двум критериям.

1 ответ

Вам нужно будет ввести имя столбца непосредственно в строку. Это может привести к атаке с использованием SQL-инъекций, поэтому я бы порекомендовал запросить (и, возможно, кэшировать) информацию о схеме таблицы (специально найденную в INFORMATION_SCHEMA.COLUMNS).

Таким образом, вы можете убедиться, что ваше имя столбца, переданное пользователем, совпадает с одним из имен столбцов в вашей таблице, прежде чем вводить его в скрипт, проверив, есть ли оно в вашем списке доступных столбцов.

Другие вопросы по тегам