CORRECÇÃO: O método OracleDataReader.GetChars pode retornar os dados incorretos no .NET Framework 2.0

Traduções deste artigo Traduções deste artigo
ID do artigo: 922674 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

No Microsoft .NET Framework 2.0, o método OracleDataReader.GetChars pode retornar os dados incorretos na segunda vez que você ler dados do objeto OracleDataReader . Após a segunda hora que você chamar o método OracleDataReader.Read , o método OracleDataReader.GetChars pode retornar os dados da primeira linha.

Resolução

Informações sobre o hotfix

Um hotfix com suporte foi disponibilizada pela Microsoft. No entanto, destina-se a corrigir o problema descrito neste artigo. Aplique-o somente aos sistemas que apresentarem esse problema específico. Esta correcção poderá submetida a testes adicionais. Portanto, se você não tiver sido gravemente afetado por esse problema, recomendamos que você aguarde o próximo service pack do .NET Framework 2.0 que contém esse hotfix.

Para resolver esse problema imediatamente, contate o Microsoft Customer Atendimento para obter o hotfix. Para obter uma lista completa de telefones do serviço de suporte a clientes da Microsoft e informações sobre os custos de suporte, visite o seguinte site:
http://support.microsoft.com/contactus/?ws=support
Observação Em alguns casos, as taxas cobradas pelas ligações para chamadas de suporte podem ser canceladas se um profissional de suporte da Microsoft determinar que uma atualização específica resolverá o problema. Os custos normais de suporte serão aplicados a questões e problemas que não se qualificam à atualização específica em questão de suporte adicionais.

Pré-requisitos

Não pré-requisitos são necessários.

Requisitos de reinicialização

Reinicie o computador após aplicar esse hotfix.

Informações sobre a substituição do hotfix

Esse hotfix não substitui outros hotfixes.

Informações sobre o arquivo

A versão em inglês deste hotfix tem atributos de arquivo (ou atributos de arquivo posteriores) listados na tabela a seguir. As datas e horas desses arquivos estão listadas no horário de universal coordenado (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para encontrar a diferença entre o UTC e a hora local, use a guia fuso horário no item Data e hora no painel de controle.
Recolher esta tabelaExpandir esta tabela
Nome de arquivoVersão do arquivoTamanho do arquivoDataTempo
Mscordacwks.dll2.0.50727.178801,28008 De julho de 200611: 28
Mscorlib.dll2.0.50727.1784,317,18408 De julho de 200611: 28
Mscorwks.dll2.0.50727.1785,624,32008 De julho de 200611: 27
Normalization.dll2.0.50727.17815.36008 De julho de 200611: 28
Normidna.nlpNão aplicável59,34208 De julho de 200611: 28
Normnfc.nlpNão aplicável45,79408 De julho de 200611: 28
Normnfd.nlpNão aplicável39,28408 De julho de 200611: 28
Normnfkc.nlpNão aplicável66,38408 De julho de 200611: 28
Normnfkd.nlpNão aplicável60,29408 De julho de 200611: 28
Sos.dll2.0.50727.178377,34408 De julho de 200611: 28
System.Data.dll2.0.50727.1782,893,82408 De julho de 200611: 28
System.Data.OracleClient.dll2.0.50727.178482,30408 De julho de 200611: 28

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".

Mais Informações

Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
824684Descrição da terminologia padrão que é usada para descrever as atualizações de software
Para obter mais informações sobre o método OracleDataReader.GetChars , visite o seguinte site da Web Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/system.data.oracleclient.oracledatareader.getchars(VS.80).aspx

Etapas para reproduzir o problema

  1. Inicie o Microsoft Visual Studio 2005.
  2. No menu arquivo , clique em novo e, em seguida, clique em Project .
  3. Clique em translation from VPE for Csharp Visual , clique em Aplicativo de console , digite ConsoleApplication1 na caixa nome e, em seguida, clique em OK .
  4. No arquivo Program.cs, substitua o código existente usando o código a seguir.
    using System;
    using System.Text;
    using System.Data;
    using System.Data.OracleClient;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            private static void Main()
            {
                OracleConnection cn = new OracleConnection("Data Source=<DataSourceName>;uid=<UserName>;pwd=<Password>;");
                cn.Open();
    
                DropTable(cn);
                CreateTable(cn);
    
                OracleCommand command = cn.CreateCommand();
                command.CommandText = "SELECT DATA FROM TEST_GETCHARS ORDER BY DATA DESC";
                OracleDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {
                    string getStringText = reader.GetString(0);
                    char[] chs = new char[40];
                    long count = reader.GetChars(0, 0, chs, 0, 40);
                    String s = new String(chs);
                    Console.WriteLine("String from GetString: {2}, String from GetChars: {0}, Character count: {1}", s, count.ToString(), getStringText);
                }
    
                cn.Close();
                cn = null;
            }
    
            private static void CreateTable(IDbConnection connection)
            {
                IDbCommand command = connection.CreateCommand();
                command.CommandText = "CREATE TABLE TEST_GETCHARS (DATA varchar(40))";
                command.ExecuteNonQuery();
    
                command.CommandText = "INSERT INTO TEST_GETCHARS (DATA) VALUES('yes')";
                command.ExecuteNonQuery();
    
                command.CommandText = "INSERT INTO TEST_GETCHARS (DATA) VALUES('no')";
                for (int i = 0; i < 2000; i++)
                command.ExecuteNonQuery();
    
            }
    
            private static void DropTable(IDbConnection connection)
            {
                try
                {
                    IDbCommand command = connection.CreateCommand();
                    command.CommandText = "DROP TABLE TEST_GETCHARS";
                    command.ExecuteNonQuery();
                }
                catch (Exception)
                {
                }
            }
        }
    }
  5. No Solution Explorer , clique com o botão direito do mouse em References e, em seguida, clique em Add Reference .
  6. Clique na guia .NET , clique em System.Data.OracleClient e, em seguida, clique em OK .
  7. No menu Debug , clique em Start Debugging .

Propriedades

ID do artigo: 922674 - Última revisão: segunda-feira, 3 de dezembro de 2007 - Revisão: 1.1
A informação contida neste artigo aplica-se a:
  • Microsoft .NET Framework 2.0
Palavras-chave: 
kbmt kbfix kbbug kbhotfixserver kbqfe kbpubtypekc KB922674 KbMtpt
Traduçã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: 922674

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com