Добрый день, Слава!
Вам необходимо использовать PreparedStatement для формирования вашего запроса и обработки его результат.
Документацию можно почитать здесь:
Java api PreparedStatementPreparedStatement TutorialЕсли вкратце, то в ваш запрос, на месте параметров необходимо проставить знаки вопроса и далее с помощью методов .set заполнить их необходимыми значениями.
В результате можно отказаться от использования карты.
Пример:
[code lang=js]// Чтение параметров из формы.
String name = jTextField1.getText();
int age;
try {
age = Integer.parseInt(jTextField2.getText());
} catch(NumberFormatException e) {
// Не верно задан возраст
// таким образом можно организовать дополнительную проверку
// правильности введенных значений
return;
}
String phone = jTextField3.getText();
Connection con = null;
PreparedStatement stmt = null;
ResultSet res = null;
List<String> names = null;
try {
if(con == null) {
Class.forName(dbDriver);
con = DriverManager.getConnection(dbUrl, user, password);
}
stmt = con.prepareStatement("select name from users where name=? and age=? and phone=?");
// Устанавливаем имя
stmt.setString(1, name);
// Устанавливаем возраст
stmt.setInt(2, age);
// Устанавливаем телефон
stmt.setString(3, phone);
res = stmt.executeQuery();
while(res.next()) {
if(names == null) {
names = new ArrayList<String>();
}
// Сохраняем результат в список
names.add(res.getString(1));
}
} catch (ClassNotFoundException e) {
// Ошибка, не найден драйвер базы данных
} finally {
// По окончанию работы с базой данных необходимо освободить все ресурсы и закрыть соединение
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
// Ошибка при освобождении ресурсов
}
}
if (con != null) {
try {
con.close();
} catch (SQLException e) {
// Ошибка при закрытии соединения
}
}
}
// Возвращаем результат выполнения запроса (список имен)
return names;[/code]