使用ResultSet从Oracle数据库中读取VARCHAR2

时间:2014-10-06 17:00:28

标签: java oracle resultset

最近开始使用带有Java和ResultSet的Oracle数据库,我要查询的表具有以下列结构:

USU_PASSWORD VARCHAR2(30 BYTE) NOT NULL

我的代码存在的问题是此列已经使用DES算法加密, 我的插入,更新和删除查询工作就像一个魅力,但当我想查询以找到该列上具有某些值的行时," next" ResultSet上的属性为null。

当我尝试从ResultSet中获取值时,它甚至不会进入while语句

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

一些帮助可能很好

方面

我在下面添加我的代码

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字符串是

  

&#34;从USU_NOMBRE =的usuario中选择*?和USU_PASSWORD =?&#34;

1 个答案:

答案 0 :(得分:0)

我已经找到了解决方案,这是我的加密问题,而不是DES算法,我使用了名为md5hash的Oracle MD5函数,因此,我的查询看起来像

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