Веб-приложение Java DAO записывает аутентифицированный UserID и IP-адрес в БД - PullRequest
0 голосов
/ 23 июля 2010

Я бы хотел записывать в свою БД Oracle идентификатор пользователя и IP-адрес вошедшего в систему пользователя (веб-приложение) всякий раз, когда я выполняю SQL UPDATE и INSERT.Например,

public static int updateUser(STKUser user, STKUser loggedIn) throws DAOException {
  Connection connection = null;
  connection = DB.getConnFromCache();

  PreparedStatement ps = null;

String query = "INSERT INTO xtblPersonnel (pID, pPssWrd, pAdminDate, pAdminIP, pAdminBy) VALUES (?,?,SYSDATE,?,?)";
  try {
    ps = connection.prepareStatement(query);
    ps.setString(1, user.getBadge());
    ps.setString(2, user.getPassword());
    ps.setString(3, loggedIn.getIpAddress());
    ps.setString(4, loggedIn.getBadge());
    return ps.executeUpdate();
  }
  catch (Exception e) {
     System.out.println("SQL Exception inserting new user with badge: " + user.getBadge() + ". Error Message: " + e.getMessage());
     LOGGER.log(Level.INFO, "SQL Exception inserting new user with badge: " + user.getBadge() + ". Error Message: " + e.getMessage(), user);
     throw new DAOException("SQL Exception inserting new user!");
     // return 0;
  }

  finally {
     DB.closePreparedStatement(ps);
     DB.releaseConnToCache(connection);
  }

}

STKuser - это Javabean

Мое приложение использует общее имя пользователя и пароль Oracle db, поэтому я хочу записать, кто это сделалобновление или вставка и с какого компьютера.

Это приемлемый подход.Я имел обыкновение проходить в сессии, но понял, что это нет нет.

1 Ответ

0 голосов
/ 23 июля 2010

Предполагая, что вы правильно закрываете все ресурсы БД как Connection, Statement и ResultSet в блоке finally блока try, где вы их получили, и код делает то, что должен делать Я не вижу проблем с рассматриваемым подходом. Нет риска для SQL-инъекций, так как вы используете PreparedStatement, если это было вашей реальной проблемой. Объявление метода static, однако, немного неприятно, но тогда нам нужно больше узнать о контексте, в котором выполняется код.

...