Consulta Oracle

Boa tarde galera… Tenho uma aplicacao web que recebe um password consulta no banco Oracle 10XE e retorna os dados… Mas ta dando erro na consulta…

java.sql.SQLException: ORA-00942: a tabela ou view não existe

Se acaso eu digitar no console do oracle os campos tem que vir com “”…
Ex: Isto da erro

select * from usuario where password = 123

Mas assim no console do oracle funciona e retorna legal…

select * from "usuario" where "password" = 123

O codigo eu vou colocar abaixo … tanto do servlet como do DAO…

SERVLET

package br.com.mgf.servlet;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.mgf.modelo.Dao;
import br.com.mgf.modelo.Usuario;

public class Login extends HttpServlet {

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
		response.setContentType("text/html");
		try {
			Dao dao = new Dao();
			Usuario usuario = new Usuario();
			usuario.setPassword(request.getParameter("senha"));
			Usuario user = dao.validaUsuario(usuario);
			RequestDispatcher req = null;
			if(user == null || !user.getPassword().equals(request.getParameter("senha"))) {
				request.getSession().setAttribute("msg", "login ou senha Incorretos");
				req = request.getRequestDispatcher("jsp/index.jsp");
			} else {
				request.getSession().setAttribute("usuario",user);
				req = request.getRequestDispatcher("jsp/Principal.jsp");
			}
		} catch(SQLException e) {
			e.printStackTrace();
			throw new ServletException(e);
		}
	}
}

DAO…

public Usuario validaUsuario(Usuario usuario) throws SQLException {
		
		PreparedStatement smtp = this.connection.prepareStatement("select * from usuario where password = ?");
		smtp.setString(1, usuario.getPassword());
		ResultSet rs = smtp.executeQuery();
		Date d = null;
		while (rs.next()){
			
			usuario.setIdUsuario(rs.getInt("idUsuario"));
			usuario.setName(rs.getString("name"));
			d = rs.getDate("dataNascimento");
			usuario.setDataNascimento(d.toString());
			usuario.setCidade(rs.getString("cidade"));
			usuario.setPerfil(rs.getString("perfil"));
			usuario.setPassword(rs.getString("password"));
			
		}
		smtp.close();
		rs.close();
		return usuario;
		
		
	}

Porque que da esse erro…?
java.sql.SQLException: ORA-00942: a tabela ou view não existe

Sendo que os campos estao corretos…

[color=darkblue]Pelo que vi no código você em determinado momento está passando this.connection.PreparedStatement, só que em nenhum momento identifiquei onde essa conexão está sendo aberta com o Oracle

Tente fazer um teste simples, algo que você tem certeza de que irá retornar, um teste de conexão, exemplo, crie uma classe com um método main fora do contexto de seu projeto e faça um “select sysdate from dual”, só para testes.[/color]

Se isto

select * from usuario where password = 123

dá erro e isto

select * from "usuario" where "password" = 123

funciona no SQL*Plus é porque as tabelas foram criadas assim

CREATE TABLE "usuario" ("password" VARCHAR2 ....)

Quando você coloca nome de tabela e coluna entre aspas nos scripts de criação de tabelas, o Oracle interpreta o nome das tabelas e colunas do jeito que está escrito. Se usar sem aspas, internamente o Oracle transforma tudo para maiusculo. Ou seja, no SELECT ele está procurando a tabela USUARIO, mas está registrado usuario.

Solução: crie as tabela sem as aspas nos scripts de criação das tabelas. (DDLs). Isto vale também para os outros objetos do banco (views, stored procedures, etc).