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
).
Таким образом, вы можете убедиться, что ваше имя столбца, переданное пользователем, совпадает с одним из имен столбцов в вашей таблице, прежде чем вводить его в скрипт, проверив, есть ли оно в вашем списке доступных столбцов.