Persistência de Dados
A computação portátil (por exemplo, usando laptops) gerou a necessidade de aplicativos que podem ser executados em um estado conectado e desconectado. O ADO adicionou suporte para isso, dando ao desenvolvedor a capacidade de salvar um cursor do cliente recordset em disco e recarregá-lo mais tarde.
Há vários cenários em que você pode usar esse tipo de recurso, incluindo o seguinte:
Viajando: Ao usar o aplicativo em trânsito, é vital fornecer a capacidade de fazer alterações e adicionar novos registros que podem ser reconectados ao banco de dados mais tarde e confirmados.
consultas raramente atualizadas: Geralmente, em um aplicativo, as tabelas são usadas como tabelas de referência, por exemplo, tabelas fiscais estaduais. Eles são raramente atualizados e são apenas para leitura. Em vez de reler esses dados do servidor sempre que o aplicativo for iniciado, o aplicativo pode simplesmente carregar os dados de um conjunto de registros localmente persistente.
No ADO, para salvar e carregar recordsets, use os métodos Recordset.Save e Recordset.Open(,,,,adCmdFile) no objeto recordset do ADO.
Você pode usar o método Recordset Save para persistir o do Conjunto de Registros do ADO em um arquivo em um disco. (Você também pode salvar um Recordset em um objeto Stream do ADO. Objetos Stream são discutidos posteriormente no guia.) Posteriormente, você pode usar o método Open para reabrir o Recordset quando estiver pronto para usá-lo. Por padrão, o ADO salva o conjunto de registros no formato proprietário do Microsoft Advanced Data TableGram (ADTG). Esse formato binário é especificado usando o valor adPersistADTG PersistFormatEnum. Como alternativa, você pode optar por guardar seu conjunto de registros como XML usando adPersistXML. Para obter mais informações sobre como salvar conjuntos de registros como XML, consulte Persisting Records in XML Format.
A sintaxe do método Salvar é a seguinte:
recordset.
Save
Destination, PersistFormat
Na primeira vez que você salvar o conjunto de registros , é opcional especificar Destino. Se você omitir Destino, um novo arquivo será criado com um nome baseado no valor da propriedade Source do Recordset.
Omita Destino quando você chamar Salvar após o primeiro salvamento ou ocorrerá um erro em tempo de execução. Se você subsequentemente chamar Salvar com um novo Destino, o Recordset será salvo no novo destino. No entanto, o novo destino e o destino original estarão abertos.
Salvar não fecha o conjunto de registros ou destino, portanto, você pode continuar a trabalhar com o conjunto de registros e salvar suas alterações mais recentes. de Destino permanece aberto até que o do conjunto de registros seja fechado, durante o qual outros aplicativos podem ler, mas não gravar em de Destino.
Por motivos de segurança, o método Salvar permite apenas o uso de configurações de segurança baixa e personalizada de um script executado pelo Microsoft Internet Explorer.
Se o método Salvar for chamado enquanto uma operação assíncrona Recordset busca, execução ou atualização estiver em andamento, Salvar aguardará até que a operação assíncrona seja concluída.
Os registros são salvos a partir da primeira linha do conjunto de registros . Quando o método Salvar for concluído, a posição da linha atual será movida para a primeira linha do conjunto de registros .
Para obter melhores resultados, defina a propriedade CursorLocation como adUseClient ao usar Salvar. Se o provedor não der suporte a todas as funcionalidades necessárias para salvar objetos Recordset, o Serviço de Cursor fornecerá essa funcionalidade.
Quando um Recordset é mantido com a propriedade CursorLocation definida como adUseServer, a capacidade de atualização do Recordset é limitada. Normalmente, somente atualizações de tabela única, inserções e exclusões são permitidas (dependentes da funcionalidade do provedor). O método Resync também não está disponível nessa configuração.
Como o parâmetro de destino pode aceitar qualquer objeto que dê suporte à interface de IStream OLE DB, você pode salvar uma do Conjunto de Registros diretamente no objeto de Resposta ASP.
No exemplo a seguir, os métodos Save e Open são usados para persistir um conjunto de registros e, posteriormente, reabri-lo:
'BeginPersist
conn.ConnectionString = _
"Provider=SQLOLEDB;Data Source=MySQLServer;" _
& "Integrated Security=SSPI;Initial Catalog=pubs"
conn.Open
conn.Execute "create table testtable (dbkey int " & _
"primary key, field1 char(10))"
conn.Execute "insert into testtable values (1, 'string1')"
Set rst.ActiveConnection = conn
rst.CursorLocation = adUseClient
rst.Open "select * from testtable", conn, adOpenStatic, _
adLockBatchOptimistic
'Change the row on the client
rst!field1 = "NewValue"
'Save to a file--the .dat extension is an example; choose
'your own extension. The changes will be saved in the file
'as well as the original data.
MyFile = Dir("c:\temp\temptbl.dat")
If MyFile <> "" Then
Kill "c:\temp\temptbl.dat"
End If
rst.Save "c:\temp\temptbl.dat", adPersistADTG
Set rst = Nothing
'Now reload the data from the file
Set rst = New ADODB.Recordset
rst.Open "c:\temp\temptbl.dat", , adOpenStatic, _
adLockBatchOptimistic, adCmdFile
Debug.Print "After Loading the file from disk"
Debug.Print " Current Edited Value: " & rst!field1.Value
Debug.Print " Value Before Editing: " & rst!field1.OriginalValue
'Note that you can reconnect to a connection and
'submit the changes to the data source
Set rst.ActiveConnection = conn
rst.UpdateBatch
'EndPersist
Observações
Esta seção contém os tópicos a seguir.