2014-10-06 1 views
-2

недавно начал работать с базой данных Oracle с Java и ResultSet, и таблица Я хочу запроса имеет следующую структуру столбца:Read VARCHAR2 из Oracle Database с ResultSet

USU_PASSWORD VARCHAR2(30 BYTE) NOT NULL 

Проблема что я имею с моим код состоит в том, что этот столбец уже зашифрован с помощью алгоритма DES, мои запросы на вставку, обновление и удаление работают как шарм, но когда я хочу запросить, чтобы найти строку с некоторым значением в этом столбце, атрибут «next» на ResultSet подходит к нулю.

Когда я пытаюсь принимать значения от ResultSet, она даже и не попасть в то время как заявление

while(resultSet.next(){ //Does not enter here, and the next property is null } 

Некоторую помощь может быть приятно

Regard

добавить свой код ниже

Sesion sesion = null; 
    ResultSet rs = null; 
    try{ 
     rs = executePreparedStatement(LOGIN_PREPARED_STATEMENT, new String[]{nombreUsuario, pass}); 
     while(rs.next()){ 
      sesion = new Sesion(); 
      sesion.setCarCveElectoral(rs.getString("CAR_CVE_ELECTORAL")); 
      sesion.setCarEstCve(rs.getString("CAR_EST_CVE")); 
      sesion.setCarFechaInicio(rs.getDate("CAR_FECHA_INICIO")); 
      sesion.setCarFechaTermino(rs.getDate("CAR_FECHA_TERMINO")); 
      sesion.setCarPlzCve(rs.getString("CAR_PLZ_CVE")); 
      sesion.setCarPreCve(rs.getString("CAR_PRE_CVE")); 
      sesion.setCarPstCve(rs.getString("CAR_PST_CVE")); 
     } 
     return sesion; 
    }catch(Exception ex){ 

    } 

Где код функции executePreparedStatement равен

ResultSet rs = null; 
    PreparedStatement ps = null; 
    try{ 
     if(this.connection == null){ 
      if(getConnection()){ 
       ps = this.connection.prepareStatement(stmnt); 
       for(int i = 0; i < params.length; i ++) 
        ps.setString(i, params[i]); 
       rs = ps.executeQuery(); 
      }else{ 
       System.out.println("No se pudo conectar a la base de datos"); 
      } 
     }else{ 
      ps = this.connection.prepareStatement(stmnt); 
      for(int i = 0; i < params.length; i ++) 
       ps.setString(i + 1, params[i]); 
      rs = ps.executeQuery(); 
     } 
    }catch(SQLException ex){ 
     System.out.println("Ha ocurrido un error: " + ex.getMessage()); 
    } 
    return rs; 

И LOGIN_PREPARED_STATEMENT Строка

«выберите * от где USU_NOMBRE Новичок =? И USU_PASSWORD =?»

+0

попробуйте использовать PreparedStatement для выполнения запросов, если вы используете JDBC http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html –

+0

Является ли ваш результирующий набор возвратом только по одной записи каждый раз? –

+0

Я уже пробовал с PreparedStatement и то же самое, самое странное, что ResultSet ДОЛЖЕН возвращать только одну строку, уже проверен, но это не так, я также читаю о VARCHAR2 с Oracle, похоже, что у него есть некоторые проблемы, чтобы прочитать его как String – AlbertoRuvel

ответ

0

Я нашел решение уже, это была проблема с моим шифрованием, вместо алгоритма DES, я использовал функцию Oracle MD5 под названием md5hash, поэтому, мой запрос будет выглядеть

"SELECT * FROM USUARIO WHERE USU_NOMBRE = '%s' AND USU_PASSWORD = md5hash('%s')"