Retorno, array de String's

8 respostas
rafaengenharia

O que pode tah errado:

while(rs.next()){
                	
                	 sql = "SELECT * FROM " +  rs.getString("tabela") + " WHERE " + rs.getString("chave");
                	 vTamanTipo[0][rs.getRow()-1] = this.pegaTamanhoCampo(rs.getString("tabela"), postGresConn);
                 }

Sendo que a função é:

public String[] pegaTamanhoCampo(String tabela, Connection conexao)throws SQLException{
    	 
    	 Statement stGetCount = conexao.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
        
    	 String[] vVarRetorno = {"", ""}; 
    	 String sql = "SELECT a.cd_tabela, b.cd_tabela_destino, c.nm_coluna" +
    	 		" as CAMPO_NOME, c.tam_coluna as CAMPO_TAMANHO, " +
    	 		"d.ds_dado as CAMPO_TIPO FROM sinc.sinc_tabela a, sinc.sinc_equivalencia_tab b, " +
    	 		"sinc.sinc_coluna c, sinc.sinc_tipo_dado d " +
    	 		"WHERE a.nm_tabela = upper(\'" + tabela + "\') AND " +
    	 		"a.cd_tabela = b.cd_tabela_origem AND " +
    	 		"c.cd_tabela = b.cd_tabela_destino AND c.tipo_dado = d.cd_dado";

    	 ResultSet res = stGetCount.executeQuery(sql);
    	 
    	 while(res.next()){
    		 vVarRetorno[0] = res.getString("CAMPO_TAMANHO");
    		 vVarRetorno[1] = res.getString("CAMPO_TIPO");
    	 }
    	 
    	 return vVarRetorno;
     }

Sempre dá o seguinte erro:

Type mismatch: cannot convert from String[] to String

Ele diz que não posso converter o vVarRetorno que é um array para um string, mas o vTamanTipo é um array bidimensional declarado da seguinte forma:

String[][] vTamanTipo = new String[0][i];//i=10 - consulta retornando 10 resultados no caso

Quero que o vTamanTipo seja um array no qual cada elemento guarda um elemento vVarRetorno que também é um array.

Alguém pode dar um help ?

att,

8 Respostas

sapobomba

fala aih, blz?

cara não entendi mto bem seu código, mas o erro

Type mismatch: cannot convert from String[] to String

é pq vc tem um vetor String[] e está tentando converter para String, o que não é possivel.

em qual linha da o erro?

abraço

rafaengenharia

O erro acontece no retorno da função pegaTamanhoCampo:

while(rs.next()){  
                          
sql = "SELECT * FROM " +  rs.getString("tabela") + " WHERE " + rs.getString("chave");  
 vTamanTipo[0][rs.getRow()-1] = this.pegaTamanhoCampo(rs.getString("tabela"), postGresConn); //ERRO AKI 
                     }
sapobomba

Cara acho que é o seguinte:

Teu metodo pegaTamanhoCampo retorna um String[], certo?

E essa tua var vTamanTipo é um String[][] certo?

Então para vc atribuir um valor no vTamanTipo[posX][posY] vc tem que abribuir uma String e não um vetor String[]

exemplo correto:

vTamanTipo[1][1] = "umaString";

exemplo errado, do modo q vc está fazendo está assim:

String[] var = retornoDoMetodoXYZ(); vTamanTipo[1][1] = var;

Sacou?

Vc deve alterar o retorno do seu metodo para String ou alterar sua estrutura.

Espero ter ajudado

Abraço

alissin

rafaengenharia, usando o raciocinio do sapobomba, nao sei se irá resolver o seu problema mas uma matriz tridimencional talvez possa lhe ser util:

vTamanTipo[1][1] = "umaString";

String[] var = retornoDoMetodoXYZ();   
vTamanTipo[1][1] = var;

se vc fizer:

String[] teste = new String[1];
String[][][] vTamanTipo = new String[1][1][1];
vTamanTipo[0][0] = teste;

desculpem se estiver falando muita besteira.. mas pelo menos compilou aqui hehe nao cheguei a debugar!

[]'s

alissin

pessoal… desculpem… nao deu muito certo isso nao… tenho que testar isso melhor

[]'s!

sapobomba

humm

é realmente necessário utlizar vetores e arrays bidimensionais?

não consegues resolver usando alguma estrutura tipo arraylist ou hashtable?

seila, eu dificilmente utilizo vetores/arrays [][]…

abraço

rafaengenharia

Resolve utilizando a classe vector, o programa tá executando normalmente, mas fica aparecendo uns warnings no eclipse, minha função é esta:

public Vector pegarDados(String consultaSQL, Connection conexao)throws SQLException{
    	 
    	 Statement stGetCount = conexao.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
    	 ResultSet res = stGetCount.executeQuery(consultaSQL);
    	// String vVarRetorno = "";
    	 Vector vVarRetorno = new Vector();
    	 while(res.next()){
    		 vVarRetorno.add(res.getArray(res.getRow()));
    	}
    	 return vVarRetorno;
     }

e no eclipse fica aparecendo o warnig:

Vector is a raw type. References to generic type Vector<E> should be parameterized.

Alguma sugestão pra retirar esse warning ?

att,

sapobomba

Opaa

Isso aí é coisa do generics

vc tem que instanciar o vetor e dizer qual o tipo de objeto que ele vai conter

por exemplo:

Vector<String[]> vector = new Vector<String[]>();

ta ligado?

abraço

Criado 13 de março de 2008
Ultima resposta 14 de mar. de 2008
Respostas 8
Participantes 3