Estou dando um esclarecimento procurando sanar um problema que alguns usuários me relataram sobre o artigo : VB.NET 2005 - Criando uma aplicação completa : Locadora de Filmes.
Alguns usuários relataram que após realizarem a inclusão/alteração exclusão de dados quando fechavam a aplicação e abriam novamente tudo era perdido não havendo dado algum nas tabelas de dados da aplicação.
Após pesquisar sobre o fato acabei encontrando uma possível explicação para o fato em uma lista de discussão. Vamos a ela:
Um pouco de teoria
Um arquivo de banco de
dados local pode ser incluído como um arquivo em um projeto do Visual Studio.
A primeira vez que você conectar seu aplicativo para um arquivo de banco de
dados local, você pode escolher entre criar uma cópia do banco de dados em
seu projeto se conectar com o arquivo de banco de dados existente em seu local
atual.
Se você optar por se conectar ao arquivo existente, em seguida, uma conexão é
criada como se você estivesse se conectando a qualquer banco de dados remoto, e
o arquivo de banco de dados é deixado em seu local original.
Se você optar por copiar o banco de dados em seu projeto, o Visual Studio
cria uma cópia do arquivo de banco de dados, adicionando-o em seu projeto, e
modifica a conexão de modo que agora aponta para o banco de dados em seu
projeto, em oposição ao local original do arquivo de banco de dados.
Quando você cria um
projeto, o arquivo de banco de dados pode ser copiado da pasta do projeto raiz
para a pasta de saída (\bin). (Selecione Mostrar todos os arquivos no
Solution Explorer para exibir a pasta bin.)
Este comportamento é baseado na configuração da propriedade Copy to Output
Directory do arquivo. A configuração padrão da propriedade depende do tipo
de arquivo de banco de dados você está usando.
A tabela
a seguir descreve as configurações da propriedade Copy to Output
Directory:
|
Durante o
desenvolvimento de aplicativos, todas as alterações feitas nos dados (durante o
tempo de execução dentro de sua aplicação) são feitas ao banco de dados da pasta
bin. Por exemplo, quando você pressiona F5 para depurar seu aplicativo, você
está conectado ao banco de dados na pasta bin.
O arquivo de banco de dados na sua pasta raiz do projeto é alterado somente
quando você editar o esquema de banco de dados ou dados usando Server Explorer,
Database Explorer ou outros Visual Database Tools.
Quando você realiza uma conexão com um banco de dados SQL Server usando o Visual Basic .NET através do Server Explorer e então cria seu Data Source usando aquela conexão, o VB .NET irá exibir uma janela de diálogo com a seguinte mensagem:
"The connection you selected uses a local data file that is not in the current project. Would you like to add the file to your project and modify the connection ?"
Para responder à
essa pergunta na caixa de diálogo de arquivo do banco de dados local esteja
atento e saiba o que você esta fazendo: 1- Clique em Sim(Yes), se você quiser que o Visual Studio copie o arquivo de banco de dados em seu projeto e modifique a conexão para apontar para a cópia no seu projeto. 2- Clique em Não(No), se você não quiser que o Visual Studio copie o arquivo de banco de dados em seu projeto. Em vez disso, a conexão aponta para o arquivo no local original e o arquivo de banco de dados não é adicionado como um arquivo para o projeto. |
Se você confirmar e clicar no botão Yes, ao compilar(Build), sua aplicação o VB .NET irá copiar o arquivo .mdf para o diretório de saída da aplicação onde fica o arquivo .EXE da mesma. (a pasta \bin)
Só que tem um pequeno detalhe : a conexão em tempo de projeto, no Server Explorer, ainda estará apontando para o arquivo .mdf original e não para a cópia que esta na pasta de saída da aplicação.
Este comportamento simplifica o processo de compilação da aplicação mas tem um efeito colateral desagradável que abaixo você descobrirá...
Agora você pode rodar a sua aplicação e incluir, alterar e excluir registros para alterar o conteúdo do arquivo .mdf que reside na pasta de saída da sua aplicação.
Contudo , após fazer isto, se você verificar o conteúdo do arquivo .mdf, via Server Explorer, você não verá as alterações feitas, pois, você estará olhando para o arquivo .mdf original e não para o arquivo que foi copiado para a pasta de saída da sua aplicação.
Desta forma você pensa que o seu código não esta efetuando as alterações, pois esta olhando para o arquivo original e não para o arquivo que a aplicação esta usando como arquivo de trabalho.
Tem outro problema: a próxima vez que você compilar (Build) a sua aplicação o VB .NET irá copiar o arquivo original .mdf para a pasta de saída de sua aplicação novamente, e, adivinha ????
Vai matar o seu arquivo atualizado .mdf.
Pronto ! você voltou a estaca zero, e, se repetir o processo vai ficar perdido como um 'cachorro correndo atrás do próprio rabo' sem saber onde esta o problema.
Se você olhar para o arquivo .mdf
na janela Server Explorer irá verificar que a propriedade : Copy to Output Directory tem o valor padrão definido como : Copy Always Desta forma o arquivo original sempre será copiado, após a compilação, para a pasta de saída da sua aplicação, e, o seu arquivo de trabalho será sobrescrito, e, você perderá todas as alterações feitas.
|
Com isto solucionamos o mistério dos dados perdidos ou não atualizados. Francamente...
Depois dessa, até breve...
Tito 3:10 Ao homem faccioso, depois da primeira e segunda admoestação, evita-o,
Tito 3:11 sabendo que esse tal está pervertido, e vive pecando, e já por si mesmo está condenado.
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências: