Você está offline; aguardando reconexão

Mensagem de erro ao usar o CommandBuilder: "Uma exceção sem tratamento do tipo 'System.NullReferenceException' ocorreu"

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: 310367
Este artigo se refere à seguintes Microsoft .NET Framework Class Library namespaces:
  • System.Data.OLEDB
  • System.Data.SqlClient
Sintomas
Se você usar o objeto CommandBuilder explicitamente obter comandos para o objeto DataAdapter da seguinte maneira:
da.InsertCommand = cb.GetInsertCommand				
e execute o seguinte código Visual Basic .NET
cb.DataAdapter = Nothing				
ou
cb.DataAdapter = null;				
os comandos que você adicionar o DataAdapter serão excluídos e você receber a seguinte mensagem de erro:
Uma exceção sem tratamento do tipo 'System.NullReferenceException' ocorreu no app_name .exe

Obter informações adicionais: não definida para uma instância de um objeto de referência de objeto.
Causa
CommandBuilder exclui os comandos que ele gera quando ele é disassociated from a DataAdapter . CommandBuilder e DataAdapter estão vinculados; quando elas forem desvinculadas ou disassociated, os comandos são nulled. Esse problema não afeta os comandos que você criar desde o início (a partir do zero).
Resolução
Use um dos seguintes métodos para resolver esse problema:
  • Não desassocie o CommandBuilder do DataSet .
  • Crie os comandos, no código ou por meio de ferramentas de dados Visual.
Situação
Esse comportamento é por design.
Mais Informações

Passos para reproduzir o problema

  1. Crie um novo projeto Visual Basic.NET Windows Application. Form1 é adicionado para o projeto por padrão.
  2. Adicione um controle de botão ao Form1.
  3. Alterne para modo de exibição código e adicione o código a seguir na parte superior da janela código:
    Imports System.Data.OleDbImports System.Data.SqlClient					
  4. Adicione o seguinte código ao evento Click do botão :
            Dim con As New SqlConnection("server=myserver;uid=sa;pwd=mypassword;" & _                                     "database=northwind")        Dim da As New SqlDataAdapter("Select * From Customers", con)        Dim cb As New SqlCommandBuilder(da)        Dim cmdInsert As New SqlCommand( _               "Insert Into Customer (CustomerID) Value ('AAAAA')", con)        da.InsertCommand = cmdInsert        da.UpdateCommand = cb.GetUpdateCommand        da.DeleteCommand = cb.GetDeleteCommand        Debug.WriteLine(da.InsertCommand.CommandText)        Debug.WriteLine(da.DeleteCommand.CommandText)        cb.DataAdapter = Nothing ' Comment out this line to avoid the error.        cb = Nothing        Debug.WriteLine(da.InsertCommand.CommandText)             Debug.WriteLine(da.DeleteCommand.CommandText)  'Error occurs here.					
  5. Modificar a seqüência de conexão conforme apropriado para seu ambiente.
  6. Pressione a tecla F5 para compilar e executar o aplicativo.

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 310367 - Última Revisão: 12/11/2006 20:14:48 - Revisão: 2.12

Microsoft ADO.NET 2.0, Microsoft ADO.NET (included with the .NET Framework), Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Visual J# .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic 2005, Microsoft Visual C# .NET 2003 Standard Edition, Microsoft Visual C# 2005

  • kbmt kbtshoot kberrmsg kbprb kbsqlclient kbsystemdata KB310367 KbMtpt
Comentários
d"; document.getElementsByTagName("head")[0].appendChild(m);