Указание имени переменной в предложении QUERY WHERE в JDBC - PullRequest
6 голосов
/ 09 апреля 2010

Может кто-нибудь дать мне ссылку о том, как создать запрос в JDBC, который получает имя переменной в операторе WHERE, или написать, если быть более точным, мой код выглядит примерно так:

      private String getLastModified(String url) {
     String lastModified = null;
     ResultSet resultSet;
String query = "select LastModified from CacheTable where " + 
     " URL.equals(url)";
     try {
      resultSet = sqlStatement.executeQuery(query);
}

Теперь мне нужен синтаксис, который позволяет мне возвращать объект ResultSet, где URL в cacheTable равен url из аргумента метода.

спасибо

Ответы [ 3 ]

14 голосов
/ 09 апреля 2010

Самый простой способ будет

String query = "select LastModified from CacheTable where url = '" + url +"'";

Вы должны использовать переменные связывания:

String query = "select LastModified from CacheTable where url = ?";
prepStmt = conn.prepareStatement(query);
prepStmt.setString(1, url);
rs = prepStmt.executeQuery();
1 голос
/ 09 апреля 2010

Чтобы очистить заблуждение: JDBC и SQL - это две совершенно разные вещи. Базы данных понимают только язык SQL. Это (полу) стандарт, который вы можете выучить здесь . JDBC - это просто API Java, который позволяет вам выполнять язык SQL с использованием кода Java. Ни меньше, ни больше. JDBC не является языком Java для написания языка SQL или около того. Это просто мессенджер между кодом Java и базой данных. Вы можете узнать JDBC здесь .

Тем не менее, да, PreparedStatement - это способ установить значения в запросе SQL. Он не только облегчает установку полноценных объектов Java в строке SQL с помощью методов setXXX(), но также избавляет от атак SQL-инъекция .

1 голос
/ 09 апреля 2010

Чтобы продвинуться еще дальше, вы должны действительно использовать DBUtils из apache-commons или Sping JDBC framework. Большая часть работы JDBC является обыденной и подверженной ошибкам из-за количества шагов, связанных с ней. Обе ссылки имеют рабочие примеры для начала работы.

Эти вспомогательные библиотеки сделают вашу жизнь намного комфортнее :-).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...