最近开始使用带有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;
答案 0 :(得分:0)
我已经找到了解决方案,这是我的加密问题,而不是DES算法,我使用了名为md5hash的Oracle MD5函数,因此,我的查询看起来像
"SELECT * FROM USUARIO WHERE USU_NOMBRE = '%s' AND USU_PASSWORD = md5hash('%s')"