ID do artigo: 824106 - Última revisão: terça-feira, 23 de setembro de 2003 - Revisão: 1.1

PROBLEMA: "ResultSet pode não reler dados de linha" ' Erro ao ler dados de um objeto de ResultSet JDBC

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sintomas

Você tiver um aplicativo Java que usa JDBC para recuperar um objeto ResultSet usando o driver do Microsoft SQL Server 2000 para JDBC. Quando você tenta ler uma coluna em ResultSet , você receberá a seguinte mensagem de erro:
Java.SQL.SQLException: ResultSet [Microsoft] [SQLServer driver do 2000 para JDBC] não pode nova leitura de dados da linha da coluna 1.
Observação Nessa mensagem de erro, as palavras "podem não" são um erro de ortografia para a palavra "não".

O número da coluna que a mensagem de erro se refere a depende o esquema de seu objeto ResultSet .

Causa

Este erro ocorre com objetos ResultSet que contêm uma coluna BLOB (por exemplo, texto , ntexto ou imagem tipos de dados). O driver não é possível retornar uma coluna BLOB fora de ordem porque ele não armazena em cache todo o conteúdo dos tipos de dados BLOB devido a limitações de tamanho.

Para qualquer linha em ResultSet , você pode ler qualquer coluna da esquerda para direita e cada coluna deve ser lido somente uma vez. Se você tentar ler fora de ordem de colunas, ou se você nova leitura uma coluna de ResultSet , você receberá a mensagem de erro descrita na seção "Sintomas".
Para evitar que o problema, leia as colunas ResultSet na ordem.

Situação

Esse comportamento é por design.

Mais Informações

Passos para reproduzir o problema


Criar a tabela de teste

  1. Inicie o Microsoft SQL Query Analyzer.
  2. Cole as seguintes consultas SQL no Editor de consulta:
    use pubs;
    create table myTable (fld1 int, fld2 varchar(20), remark text);
    insert into myTable values (1, 'Joseph', 'Text for Joseph');
    insert into myTable values (2, 'Michael', 'Text for Michael');
    insert into myTable values (3, 'Thomas', 'Text for Thomas');
    
  3. No menu consulta , clique em Executar .
  4. Feche o Microsoft SQL Query Analyzer.

Criar e testar o aplicativo Java

  1. Cole o seguinte código no bloco de notas, ou em um editor de ext t de sua escolha:
    import java.sql.*;
    import java.io.*;
    
    public class Class1
    {
    	public static void main (String[] args)
    	{
    		try
    		{
    			Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver" );
    			Connection connection = DriverManager.getConnection("jdbc:microsoft:sqlserver://server:1433;databasename=pubs;SelectMethod=direct", "<UserId>","<PassWd>");
    			Statement stmt = connection.createStatement();
    			String s = "SELECT fld1, fld2, remark FROM myTable";
    			ResultSet rs = null;
    			rs = stmt.executeQuery(s);
    			System.out.println("Success! The following are the rows in this query:");
    			int fld1;
    			String fld2;
    			String remark;
    			while (rs.next())
    			{
    				remark = rs.getString("remark"); //fails if in this order
    				fld1 = rs.getInt("fld1");
    				fld2 = rs.getString("fld2");
    				//remark = rs.getString("remark"); //works fine if in this order
    				System.out.println(fld1 + ", " + fld2 + ", " + remark);
    			}
    			rs.close();
    			stmt.close();
    			connection.close();
    		}
    
    		catch(Exception e)
    		{
    			System.out.println(" Exception = " + e );
    		}
    		try
    		{
    			System.out.println("Press any key to quit...");
    			System.in.read();
    		}
    		catch (Exception e)
    		{
    
    		}
    	}
    }
  2. Substitua o servidor, <userid> e <passwd> nesse código com o nome do computador que está executando o SQL Server, sua identificação de usuário e sua senha.
  3. Salve esse código Java como Class1.java .
  4. Compile o arquivo de origem Java que você criou na etapa 4 e, em seguida, executar o aplicativo. Você receber a mensagem de erro "Sintomas" seção descreve quando o primeiro getString chamada são feitas.

Referências

Para obter informações adicionais sobre Microsoft JDBC, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
313100  (http://support.microsoft.com/kb/313100/ ) COMO: começar com Microsoft JDBC

A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Driver for JDBC
Palavras-chave: 
kbmt kberrmsg kbjdbc kbjava kbdatabase kbprb KB824106 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 824106  (http://support.microsoft.com/kb/824106/en-us/ )
Retired KB ArticleAviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.