Java stored procedure - Oracle

5 respostas
pintofree

Boa Tarde Pessoal. Estou com um problema em fazer uma java stored procedure que criei no oracle conectar no mysql.

O problema que encontrei foi que a mesma não encontra a classe "com.mysql.jdbc.Driver" do mysql. Eu não sei exatamente onde colocar o mysql_conector .

A classe sem estar no banco funciona normal.
Bem quem tiver uma ideia do que possa ser, ai vai a classe.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *Classe responsavel por passar os dados das views do nfex em oracle para as tabelas em mysql.
 */
public class GravaMysql {

    public static String executar(String view, String sequencial, String valor) {
        if (view == null || sequencial == null || valor == null) {
            return "Parametros invalidos preencha todos";
        }
        String erro = "";
        //Sql de selecao de view
        String selecionaView = "Select * from " + view + " where " + sequencial + " = " + valor;
        //String retorno = "";
        StringBuffer sqlinsert = null;
        try {
            java.sql.Connection conn = null;
            conn = getConnectionOracle();
            Statement statement = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
            //Result Set
            ResultSet rs = statement.executeQuery(selecionaView);
            rs.next();
            //metaData
            ResultSetMetaData metaData = rs.getMetaData();
            //Sql que ira fazer a inserçã
            sqlinsert = new StringBuffer("Insert into " + view + " set ");
            //For para percorrrer as colunas
            for (int i = 1; i <= metaData.getColumnCount(); i++) {
                if (rs.getString(i) != null) {
                    sqlinsert.append("\n" + metaData.getColumnName(i) + " = '" + rs.getString(i) + "',");
                }
            }
            sqlinsert.deleteCharAt(sqlinsert.length() - 1);
            Class.forName("com.mysql.jdbc.Driver");
           
            Connection con = DriverManager.getConnection("jdbc:mysql://omega/test", "teste", "A");

            Statement executaSql = con.createStatement();
            executaSql.execute(sqlinsert.toString());

        } catch (ClassNotFoundException ex) {
            erro = "Class not Found";
            System.err.println(ex.getMessage());
        } catch (SQLException ex) {
            erro = "Sql Exception";
            System.err.println(ex.getMessage());
        }
        return "Gravado com sucesso! " +erro +" "+ sqlinsert.toString();
    }
}

Qualquer ajuda ja ficaria grato, valeus galera

5 Respostas

Pedrosa

Coloque o driver do mysql no path da aplicação que é um arquivo jar, isole as conexoes em uma classe ConnectionFactory onde vc poderia retornar um getConnectionOracle um getConnectionMysql.

furutani

Olá

O Oracle XE eu colocaria em F:\oraclexe\app\oracle\product\10.2.0\server\jlib
Eu não sei como seria em outras versões do Oracle

pintofree

furutani:
Olá

O Oracle XE eu colocaria em F:\oraclexe\app\oracle\product\10.2.0\server\jlib
Eu não sei como seria em outras versões do Oracle

Estou usando o 11, mais eu coloquei ai, no jlib, no lib, no jdbc/lib. e em nenhum lugar funcionou.

Sabe se tenho que reiniciar?

T

pintofree:
furutani:
Olá

O Oracle XE eu colocaria em F:\oraclexe\app\oracle\product\10.2.0\server\jlib
Eu não sei como seria em outras versões do Oracle

Estou usando o 11, mais eu coloquei ai, no jlib, no lib, no jdbc/lib. e em nenhum lugar funcionou.

Sabe se tenho que reiniciar?

Era interessante :frowning:

E

Cara, conseguiu resolver seu problema?
Preciso fazer a mesma coisa. Você conseguiu resolver seu problema?

Criado 2 de março de 2009
Ultima resposta 14 de mai. de 2009
Respostas 5
Participantes 5