Jdbc + postgresql(dw) + inserÇÃo automatizada

Opa galera, não sei o que acontece com o meu código, mas toda vez que o rodo, tenho este retorno:


run:
Connected to dw (Datawarehouse)
org.postgresql.util.PSQLException: ERROR: relation “prova” does not exist
Position: 15
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:353)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:252)
at bd.oraclejdbc.main(oraclejdbc.java:123)
BUILD SUCCESSFUL (total time: 2 seconds)

Segue o meu código:

[code]
package bd;

import java.sql.*;

import java.sql.SQLException.*;

public class oraclejdbc{

public oraclejdbc() {

}

Connection conn;
Statement stmt;
ResultSetMetaData rsmd;
int numberOfColumns;

public void initializeOracleConn(String pHost, String pPort, String pSid,
                  String pLogin, String pPassword, String pComment) throws Exception{

    // Don't forget to add Oracle JDBC Library

    //DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

    String jdbcdriver;
    String host;
    String port;
    String sid;
    String login;
    String password;
    String comment;

    /** Sample Values
    jdbcdriver = "jdbc:oracle:thin";
    host = "demo.domain.com";
    port = "1525";
    sid = "DEMO";
    login = "demo";
    password = "demo";
    */

    jdbcdriver = "jdbc:postgresql";
    host = pHost;
    port = pPort;
    sid = pSid;
    login = pLogin;
    password = pPassword;
    comment = pComment;
    
    conn = DriverManager.getConnection(jdbcdriver + "://" + host + ":" + port + ":" + sid,login,password);
    conn.setAutoCommit (false);

    System.out.println("Connected to " + sid + " (" + comment + ")");

}

public int executeQuery(String Query) throws Exception {

    stmt = conn.createStatement();
    ResultSet rset = stmt.executeQuery(Query);
    rsmd = rset.getMetaData();
    numberOfColumns = rsmd.getColumnCount();

    System.out.println(numberOfColumns + " columns.");
    System.out.print("LINE N°" + ";");

    for(int i=1; i < numberOfColumns; i++){
        
        System.out.print(rsmd.getColumnName(i) + ";");

    }

    System.out.println(rsmd.getColumnName(numberOfColumns));

    int count = 0;
    while (rset.next()) {

        count++;
        System.out.print(count);
        System.out.print(";");
        for(int i=1; i < numberOfColumns; i++){

            System.out.print(rset.getString(i));
            System.out.print(";");

        }

        System.out.println(rset.getString(numberOfColumns));

    }

    System.out.println(count + " records.");

    return count;

}

public static void main(String[] args) {

    oraclejdbc oraclejdbc = new oraclejdbc();

    String host;
    String port;
    String login;
    String password;
    String comment;
    String sid;

    // To customize
    sid = "dw";
    host = "localhost";
    port = "5432";
    login = "postgres";
    password = "654321";
    

    comment = "Datawarehouse";
    try{

        oraclejdbc.initializeOracleConn(host, port, sid, login, password, comment);
        String Query = "select * from PROVA";
        int numRecords = oraclejdbc.executeQuery(Query);

    }catch (Exception e){
        e.printStackTrace();
    }


}

}[/code]

Sabendo que a conexao está correta com o banco de dados, e que a mesma consulta (“select * from prova;”) no pgAdmin do postgree me retorna a tabela com 1 dado inserido (que eu mesmo inseri na mão).
Se alguém tiver alguma idéia, agradecerei.
Aproveitando o tópicos, após eu solucionar meu problema, tenho uma pergunta, como faço a inserção de dados (java -> bd), sendo que meus dados estão em um .txt ??
[]'s

Você incluiu o JAR do driver de banco de dados na sua aplicação? Acho que também será preciso usar Class.forName() para iniciar o driver, mas parece que do Java 6 em diante isso não é mais necessário.

Uso o netbeans, e sim, inclui lá em libraries o jar do driver de banco de dados.
Será necessario ?

Você parece ter feito tudo certo, também estou confuso. É como se a tabela “PROVA” não existisse. Você está usando no pgAdmin os mesmos parâmetros de conexão do seu programa Java?

Sim, estou, tanto que a conexao do banco de dados ocorre de forma correta !
Eu tambem nao consigo entender o que se passa o.O.

Se vc criou a tabela com aspas… CREATE TABLE 'prova… a tabela se torna case sensitive…

ou seja SELECT * FROM prova será diferente de SELECT * FROM PROVA

Troque no seu programa de

para

pra ver se dá certo

Nao criei com aspas, e ja tentei de ambos os modos…

Então… pode ser q o pgadmin tá num banco… e o seu programa tá em outro

Nao é isso, quase que certeza, por que seguindo a logica de meu erro, mostra que foi possivel fazer a conexao…
Argh…
Ta tenso…

EDITADO:

Consegui arrumar, mudei o bd de dw para o postgres que é o padrao que é criado pelo postgreSQL, e funcionou !

Agora uma segunda pergunta, como adicionarei dados, a partir de um .txt ??
Tenho um arquivo de texto com dados do enem, que preciso adicionar, entao preciso de um loop, mas como ? nao tenho ideia…

[]'s e valeu pela ajuda pessoal

Ajusta aí no seu código … esse trecho que [size=15]mostra todas as tabelas do banco de dados[/size]:

 Connection con = DriverManager.getConnection(.....);

      // get the database metadata
      DatabaseMetaData dmd = con.getMetaData();

      // get a list of all tables
      getListOfAllTables(listOfTables, dmd);
private void getListOfAllTables(List listOfTables, DatabaseMetaData dmd) 
  throws SQLException {
    String[] tableTypes = {
        "TABLE",
        "VIEW",
        "ALIAS",
        "SYNONYM",
        "GLOBAL TEMPORARY",
        "LOCAL TEMPORARY",
        "SYSTEM TABLE"};
    ResultSet rs = dmd.getTables(null, null, "%", tableTypes);

    while (rs.next()) {
      String tableName = rs.getString(3);
      listOfTables.add(tableName);
    }
    rs.close();
  }

Não testei o código

Pra que isso ? Preciso agora adicionar os dados nas tabelas, nao ver os dados das tabelas…