как искать по id в jdbc - PullRequest
       12

как искать по id в jdbc

0 голосов
/ 03 мая 2020

Я использую в своем коде jdbc написал следующий код для поиска идентификатора:

public Item findById(String id) {
        Item result = null;

        String s = "SELECT id, key, name, creat, description FROM trackersql WHERE id = :id";

        try (Connection connection = init()) {
            PreparedStatement statement = connection.prepareStatement(s);

            ResultSet resultSet = statement.executeQuery();

            while(resultSet.next()) {
                Item item = new Item();

                statement.setString(1, id);
                statement.setString(2, item.getKey());
                statement.setString(3, item.getName());
                statement.setLong(4, item.getCreat());
                statement.setString(5, item.getDescription());
                statement.executeUpdate();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return result;
    }

выполняя проверку кода следующим образом:

try {
            DriverManager.registerDriver(new org.postgresql.Driver());
        } catch (SQLException e) {
            e.printStackTrace();
        }
        TrackerSQL trackerSQL = new TrackerSQL();
        Item item1 = new Item("1", "1", "test1", 1, "test1");

        trackerSQL.init();

        System.out.println(trackerSQL.findById(item1.getId()));

, но я получаю следующую ошибку:

ОШИБКА: синтаксическая ошибка (приблизительная позиция: ":") Позиция: 69 в орг. postgresql .core.v3.QueryExecutorImpl.receiveErrorResponse (QueryExecutorImpl. java: 2103) в орг. postgresql .core.v3.QueryExecutorImpl.processResults (QueryExecutorImpl. java: 1836) в org. postgresql .core.v3.QueryExecutorImpl.execute (QueryExecutorImpl. java: 257) в org. postgresql. .AbstractJdbc2Statement.execute (AbstractJdbc2Statement. java: 512) на орг. 1025 *: 273) на ru.job4j.trackersql2.Tracker SQL .findById (Трекер SQL. java: 104) на ru.job4j.trackersql2.Tracker SQL .main (Трекер SQL. java: 188) null

в чем моя ошибка?

1 Ответ

0 голосов
/ 03 мая 2020

JDB C не знает именованный параметр. repalce :id с ?. Также вы никогда не привязываете параметр

String s = "SELECT id, key, name, creat, description FROM trackersql WHERE id = ?";
try (Connection connection = init()) {
    PreparedStatement statement = connection.prepareStatement(s);
    statement.setString(1,id)
    ResultSet resultSet = statement.executeQuery();

В вашем коде есть другая ошибка:

            statement.setString(1, id);
            statement.setString(2, item.getKey());
            statement.setString(3, item.getName());
            statement.setLong(4, item.getCreat());
            statement.setString(5, item.getDescription());
            statement.executeUpdate();

должно быть

          Item item = new Item();

            item.setId(1, rs.getString(1));
            item.setKey(2, rs.getString(2));
          return item;
...