Recordset: Adicionando, atualizando e excluindo registros (ODBC)
Este tópico se aplica a classes MFC ODBC.
Observação |
---|
Agora você pode adicionar registros em massa com mais eficiência.Para obter mais informações, consulte Recordset: adicionando registros em massa (ODBC). |
Observação |
---|
Este tópico se aplica aos objetos derivados de CRecordset em qual linha em massa buscando não foi implementada.Se você estiver usando em massa linha buscando, consulte Recordset: buscar registros em massa (ODBC). |
Dynasets e instantâneos atualizáveis permitem que você adicione, edite (atualização) e excluir registros.Este tópico explica:
Como determinar se seu conjunto de registros é atualizável.
Como adicionar um novo registro.
Como editar um registro existente.
Como excluir um registro de.
Para obter mais informações sobre como as atualizações são transferidas para fora e como as atualizações aparecem a outros usuários, consulte Recordset: como conjuntos de registros atualizar registros (ODBC).Normalmente, quando você adicionar, editar ou excluir um registro, o recordset altera a fonte de dados imediatamente.Em vez disso, você pode lote grupos de atualizações relacionados em transações.Se uma transação está em andamento, a atualização não ficar final até confirmar a transação.Isso permite que você voltar ou reverter as alterações.Para obter informações sobre transações, consulte Transação (ODBC).
A tabela a seguir resume as opções disponíveis para conjuntos de registros com características de atualização diferente.
Opções de leitura/atualização do conjunto de registros
Tipo |
Read |
Editar registro |
Excluir registro |
Adicionar novo (acrescentar) |
---|---|---|---|---|
Somente leitura |
Y |
N |
N |
N |
Acrescentar apenas |
Y |
N |
N |
Y |
Totalmente atualizável |
Y |
Y |
Y |
Y |
Determinando se O Recordset é Updateable
Um objeto de conjunto de registros é atualizável se a fonte de dados é atualizável e aberto o conjunto de registros como atualizável.Seu atualizabilidade também depende da instrução SQL usar, os recursos do seu driver de ODBC, e se a biblioteca de Cursor ODBC está na memória.Não é possível atualizar uma fonte de dados ou recordset somente leitura.
Para determinar se seu conjunto de registros é atualizável
Chamar o objeto recordset CanUpdate função de membro.
CanUpdateRetorna um valor diferente de zero se o conjunto de registros é atualizável.
Por padrão, os conjuntos de registros são totalmente atualizáveis (você pode executar AddNew, Editar, e Excluir operações).Mas você também pode usar o appendOnly opção para abrir recordsets atualizáveis.Um conjunto de registros aberto dessa maneira permite apenas a adição de novos registros com AddNew.Você não pode editar ou excluir registros existentes.Você pode testar se um conjunto de registros é aberto somente para acrescentar chamando o CanAppend função de membro.CanAppendRetorna um valor diferente de zero se o conjunto de registros é totalmente atualizável ou aberto somente para acrescentar.
O código a seguir mostra como você pode usar CanUpdate para um objeto recordset chamado rsStudentSet:
if( !rsStudentSet.Open( ) )
return FALSE;
if( !rsStudentSet.CanUpdate( ) )
{
AfxMessageBox( "Unable to update the Student recordset." );
return;
}
Cuidado |
---|
Quando você se preparar para atualizar um conjunto de registros chamando atualização, tome cuidado que seu conjunto de registros inclui todas as colunas que compõem a chave primária da tabela (ou todas as colunas de qualquer índice exclusivo na tabela).Em alguns casos, a estrutura pode usar somente as colunas selecionadas de registros para identificar o registro na tabela para atualizar.Sem todas as colunas necessárias, vários registros podem ser atualizados na tabela, possivelmente danificar a integridade referencial da tabela.Nesse caso, o framework lança exceções ao chamar atualização. |
Adicionar um registro a um Recordset
Você pode adicionar novos registros a um conjunto de registros se sua CanAppend função de membro retorna um valor diferente de zero.
Para adicionar um novo registro a um recordset
Verifique se que o conjunto de registros é appendable.
Chamar o objeto recordset AddNew função de membro.
AddNewprepara o conjunto de registros para atuar como um buffer de edição.Todos os membros de dados de campo são definidos para o valor especial Null e marcados como inalterado, portanto, somente alterado (sujos) valores são gravados para a fonte de dados quando você chamar atualização.
Defina os valores de membros de dados de campo do novo registro.
Atribua valores para os membros de dados de campo.Aqueles que não atribuir não são gravadas para a fonte de dados.
Chamar o objeto recordset atualização função de membro.
Atualização concluir a adição Gravando novo registro na fonte de dados.Para obter informações sobre como acontece se você não chamar atualização, consulte Recordset: como conjuntos de registros atualizar registros (ODBC).
Para obter informações sobre como adicionar registros funciona e quando os registros adicionados são visíveis no seu conjunto de registros, consulte Recordset: como AddNew, editar e excluir trabalho (ODBC).
O exemplo a seguir mostra como adicionar um novo registro:
if( !rsStudent.Open( ) )
return FALSE;
if( !rsStudent.CanAppend( ) )
return FALSE; // no field values were set
rsStudent.AddNew( );
rsStudent.m_strName = strName;
rsStudent.m_strCity = strCity;
rsStudent.m_strStreet = strStreet;
if( !rsStudent.Update( ) )
{
AfxMessageBox( "Record not added; no field values were set." );
return FALSE;
}
Dica |
---|
Para cancelar um AddNew ou Editar chamada, basta fazer outra chamada para AddNew ou Editar ou ligue para Mover com o AFX_MOVE_REFRESH parâmetro.Membros de dados são redefinidos para seus valores anteriores e estão ainda em Editar ou Add modo. |
Edição de um registro em um Recordset
Você pode editar registros existentes, se o conjunto de registros CanUpdate função de membro retorna um valor diferente de zero.
Para editar um registro existente em um conjunto de registros
Verifique se que o conjunto de registros é atualizável.
Role para o registro que você deseja atualizar.
Chamar o objeto recordset Editar função de membro.
Editar prepara o conjunto de registros para atuar como um buffer de edição.Todos os membros de dados de campo são marcados para que o conjunto de registros pode informar posteriormente se foram alterados.Os novos valores para membros de dados de campo alterado são gravados para a fonte de dados quando você chamar atualização.
Defina os valores de membros de dados de campo do novo registro.
Atribua valores para os membros de dados de campo.Aqueles que não atribuir valores permanecem inalterados.
Chamar o objeto recordset atualização função de membro.
Atualização conclui a edição escrevendo o registro alterado para a fonte de dados.Para obter informações sobre como acontece se você não chamar atualização, consulte Recordset: como conjuntos de registros atualizar registros (ODBC).
Após editar um registro, o registro editado permanece o registro atual.
A exemplo a seguir mostra um Editar operação.Ele assume que o usuário tenha sido movido para um registro que deseja editar.
rsStudent.Edit( );
rsStudent.m_strStreet = strNewStreet;
rsStudent.m_strCity = strNewCity;
rsStudent.m_strState = strNewState;
rsStudent.m_strPostalCode = strNewPostalCode;
if( !rsStudent.Update( ) )
{
AfxMessageBox( "Record not updated; no field values were set." );
return FALSE;
}
Dica |
---|
Para cancelar um AddNew ou Editar chamada, basta fazer outra chamada para AddNew ou Editar ou ligue para Mover com o AFX_MOVE_REFRESH parâmetro.Membros de dados são redefinidos para seus valores anteriores e estão ainda em Editar ou Add modo. |
Excluir um registro de um conjunto de registros
Você pode excluir registros se seu conjunto de registros CanUpdate função de membro retorna um valor diferente de zero.
Para excluir um registro
Verifique se que o conjunto de registros é atualizável.
Role para o registro que você deseja atualizar.
Chamar o objeto recordset Excluir função de membro.
Excluir marca imediatamente o registro como excluído, tanto no conjunto de registros na fonte de dados.
Ao contrário de AddNew e Editar, Excluir não tem correspondente atualização chamar.
Role para outro registro.
Observação Ao passar pelo conjunto de registros, registros excluídos não poderão ser ignorados.Para obter mais informações, consulte o IsDeleted função de membro.
A exemplo a seguir mostra um Excluir operação.Ele assume que o usuário foi movido para um registro que o usuário deseja excluir.Depois de Excluir é chamado, é importante mover para um novo registro.
rsStudent.Delete( );
rsStudent.MoveNext( );
Para obter mais informações sobre os efeitos do AddNew, Editar, e Excluir funções de membro, consulte Recordset: como conjuntos de registros atualizar registros (ODBC).