DetailPage-MSS-KB

Base de Dados de Conhecimento

Artigo: 922674 - Última revisão: segunda-feira, 3 de Dezembro de 2007 - Revisão: 1.1

Disponível transferência de hotfix
Ver e solicitar transferências de hotfix
 
 

Nesta página

Sintomas

No Microsoft .NET Framework 2.0, o método OracleDataReader.GetChars poderá devolver dados incorrectos pela segunda vez que ler dados do objecto OracleDataReader . Depois do tempo segundo chamar o método OracleDataReader.Read , o método OracleDataReader.GetChars pode devolver os dados da primeira linha.

Resolução

Informações sobre a correcção

Uma correcção suportada está agora disponível da Microsoft. Contudo, destina-se a corrigir o problema descrito neste artigo. Aplique-a apenas em sistemas que tenham este problema específico. Esta correcção poderá submetida a testes adicionais. Por conseguinte, se não estiver a ser gravemente afectado por este problema, recomendamos que aguarde pelo próximo service pack do .NET Framework 2.0 que contenha esta correcção.

Para resolver este problema imediatamente, contacte o suporte técnico da Microsoft para obter a correcção. Para obter uma lista completa dos números de telefone de suporte técnico da Microsoft e informações sobre os custos de suporte, visite o seguinte Web site da Microsoft:
http://support.microsoft.com/contactus/?ws=support (http://support.microsoft.com/contactus/?ws=support)
Nota Em casos especiais, os custos normalmente inerentes às chamadas de suporte poderão ser anulados, se um técnico de suporte da Microsoft determinar que uma actualização específica resolverá o problema. Os custos normais do suporte serão aplicados a problemas adicionais e questões de suporte que não se enquadrem na atualização específica em questão.

Pré-requisitos

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

Requisito de reinício

Tem de reiniciar o computador depois de aplicar esta correcção.

Informações sobre substituição de correcções

Esta correcção não substitui quaisquer outras correcções.

Informações do ficheiro

A versão inglesa desta correcção tem os atributos de ficheiro (ou atributos de ficheiro posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são indicadas na hora universal coordenada (UTC). Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador fuso horário no item Data e hora no painel de controlo.
Reduzir esta tabelaExpandir esta tabela
Nome de ficheiroVersão do ficheiroTamanho do ficheiroDataTempo
Mscordacwks.dll2.0.50727.178801,28008-Jul-200611: 28
Mscorlib.dll2.0.50727.1784,317,18408-Jul-200611: 28
Mscorwks.dll2.0.50727.1785,624,32008-Jul-200611: 27
Normalization.dll2.0.50727.17815,36008-Jul-200611: 28
Normidna.nlpNão aplicável59,34208-Jul-200611: 28
Normnfc.nlpNão aplicável45,79408-Jul-200611: 28
Normnfd.nlpNão aplicável39,28408-Jul-200611: 28
Normnfkc.nlpNão aplicável66,38408-Jul-200611: 28
Normnfkd.nlpNão aplicável60,29408-Jul-200611: 28
Sos.dll2.0.50727.178377,34408-Jul-200611: 28
System.data.dll2.0.50727.1782,893,82408-Jul-200611: 28
System.data.OracleClient.dll2.0.50727.178482,30408-Jul-200611: 28

Ponto Da Situação

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

Mais Informação

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

Passos para reproduzir o problema

  1. Inicie o Microsoft Visual Studio 2005.
  2. No menu ficheiro , clique em Novo e, em seguida, clique em projecto .
  3. Clique em Visual C# , clique em Aplicação da consola , escreva ConsoleApplication1 na caixa nome e, em seguida, clique em OK .
  4. No ficheiro Program.cs, substitua o código existente, utilizando o seguinte código.
    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 rato em References e, em seguida, clique em Add Reference .
  6. Clique no separador .NET , clique em System.data.OracleClient e, em seguida, clique em OK .
  7. No menu Debug , clique em Iniciar a depuração .

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á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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 922674  (http://support.microsoft.com/kb/922674/en-us/ )
Partilhar
Opções de suporte adicionais
Fóruns de Suporte da Comunidade Microsoft
Contacte-nos directamente
Encontre um parceiro certificado Microsoft
Loja Microsoft