Problemas com SQL Server 2000

0 respostas
bruno_bert

Oi pessoal sou novo aki e esta é minha primeira postagem no forum.
Seguinte, estou me conectando com um banco sqlserver 2000 via odbc, com o driver jdbc-odbc bridge.
Beleza, eu me conecto de boa. Ai eu chamo uma funcao Select, que vai fazer a consulta, passando a query e os argumentos e me retorna um ResultSet. E estou usando uma PreparedStatement.

Código:

public ResultSet Select(String sql,String maquina){

try {
   PreparedStatement ps = conn.prepareStatement(sql);
   ps.setString(1,maquina);
   ps.setString(2,"A");
    
   ResultSet rs = ps.executeQuery();        
   return rs; }
    catch(SQLException e) {
        System.out.println(e.getMessage());
        return null;
    }
    
}

Logo depois eu chamo a funcao Mostra Dados. Este codigo é bem comum de ser visto aqui nesse forum. Ele pega dados de um ResultSet, joga em
dois Vetores, um de linha e outro de coluna e depois cria a JTable.

[size=18][color=red]Meu problema é: Quando eu chamo a funcao getNextRow, dentro dela eu pego o tipo do dado de cada coluna e dou um GetString, GetLong,etc (conforme for o tipo). Mas ele só tá retornando que o tipo é int(-8). E com isso, não tá preenchendo o vetor corretamente. E minha consulta tá retornando records porque o moreRecords é True. Será que é algo com o SQL Server 2000?

Obrigado.[/color][/size]

private void MostraDados(){

try{
ResultSet rs =acesso.Select(arquivo.getsql(0),arquivo.getmaquina());

boolean moreRecords = rs.next();

if ( ! moreRecords ) {

JOptionPane.showMessageDialog( null,

ResultSet contained no records, Erro, JOptionPane.ERROR_MESSAGE );

return;

}

Vector colunas = new Vector();
Vector linhas = new Vector();

// pega nomes das colunas
ResultSetMetaData rsmd = rs.getMetaData();

for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
colunas.addElement( rsmd.getColumnName( i ) );

// pega linha (dado)

do {

linhas.addElement( getNextRow( rs, rsmd ) );

} while ( rs.next() );
// Mostra tabela com resultados do ResultSet

JTable tabela = new JTable(linhas,colunas);

Container c = getContentPane();

c.add( tabela, BorderLayout.SOUTH );

c.validate();
}

catch ( SQLException sqlex ) {sqlex.printStackTrace();}

}

private Vector getNextRow( ResultSet rs, ResultSetMetaData rsmd ) {

try

{

Vector currentRow = new Vector();
for ( int i = 1; i <= rsmd.getColumnCount(); i++ )

switch( rsmd.getColumnType( i ) ) {

case Types.CHAR:

currentRow.addElement( rs.getString( i ) );

break;

case Types.INTEGER:

currentRow.addElement(new Long( rs.getLong( i ) ) );

break;

}

return currentRow;  }

catch(SQLException e){

System.out.println(e.getMessage());

return null; }

}

Criado 22 de março de 2005
Respostas 0
Participantes 1