CONNECTION STRING
Ola pessoal,
Estou com a necessidade de usar minha aplicação em rede, e nesse ponto surgiu uma duvida aqui... como devo guardar o caminho do banco, (access) ?
Estou definindo o caminho da conexão no objeto My.Settings em cada PC, mas acredito que não seja a melhor opção.
Estou com a necessidade de usar minha aplicação em rede, e nesse ponto surgiu uma duvida aqui... como devo guardar o caminho do banco, (access) ?
Estou definindo o caminho da conexão no objeto My.Settings em cada PC, mas acredito que não seja a melhor opção.
Bom Caro Amigo
W8-LISBOA. eu levaria em questao algumas coisa , se voce vai trabalhar em rede com access , acredito que seja um problema porque voce nao usa um SGB como Mysql,Sql Server ou outro , nas minha aplicao eu guardo o caminho no banco de dados encriptografados acredito que na minha solução seja mais adequada , eu uso Sql server como banco de dados
espero ter Ajudado
W8-LISBOA. eu levaria em questao algumas coisa , se voce vai trabalhar em rede com access , acredito que seja um problema porque voce nao usa um SGB como Mysql,Sql Server ou outro , nas minha aplicao eu guardo o caminho no banco de dados encriptografados acredito que na minha solução seja mais adequada , eu uso Sql server como banco de dados
espero ter Ajudado
Seguinte cara.
Se você ler a documentação da Microsoft, verá que ela não recomenda o uso de Access trabalhando com multiusuários. Grandes chances de criar inconsistências e corromper seu banco de dados.
Respondendo sua pergunta.
Como é um arquivo access mesmo. Você pode considerar que o arquivo sempre vai estar num local fixo em relação ao programa. Assim evita a dor de cabeça com caminhos.
Se você for usar senha e usuário. AÃ você usa o Settings mesmo. E se for querer algo seguro, criptografa.
Abraços
Se você ler a documentação da Microsoft, verá que ela não recomenda o uso de Access trabalhando com multiusuários. Grandes chances de criar inconsistências e corromper seu banco de dados.
Respondendo sua pergunta.
Como é um arquivo access mesmo. Você pode considerar que o arquivo sempre vai estar num local fixo em relação ao programa. Assim evita a dor de cabeça com caminhos.
Se você for usar senha e usuário. AÃ você usa o Settings mesmo. E se for querer algo seguro, criptografa.
Abraços
JOAOBENEVIDES, DS2T
Obrigado pelas sugestões.
Estou com o access por ter maior facilidade no manuseio, mais sei que preciso migrar urgentemente.
Obrigado pelas sugestões.
Estou com o access por ter maior facilidade no manuseio, mais sei que preciso migrar urgentemente.
Bem, se está no ponto de expandir sua aplicação para uso em rede, considere ao menos planejar para um futuro a médio prazo, uma conversão para um SGDB. Acredite Access apesar de ser eficiente e funcionar em rede, quando o uso dele é mais exigente você pode ter problemas sérios, incluindo corrupção do banco de dados, resultando em perda total de dados, o que é catastrófico para o cliente. Mas se for com poucos usuários e o uso não tão exigente, vai quebrar seu galho. Como já está usando .NET, sugiro fazer uso do App.Config. Simples e eficaz, apesar de eu sugerir algum tipo de criptografia para a string de conexão.
Citação::
Bem, se está no ponto de expandir sua aplicação para uso em rede, considere ao menos planejar para um futuro a médio prazo, uma conversão para um SGDB. Acredite Access apesar de ser eficiente e funcionar em rede, quando o uso dele é mais exigente você pode ter problemas sérios, incluindo corrupção do banco de dados, resultando em perda total de dados, o que é catastrófico para o cliente. Mas se for com poucos usuários e o uso não tão exigente, vai quebrar seu galho. Como já está usando .NET, sugiro fazer uso do App.Config. Simples e eficaz, apesar de eu sugerir algum tipo de criptografia para a string de conexão.
KERPLUNK,
No caso, deixaria a string em um arquivo criptografado fora aplicação?
Não é bem um arquivo criptografado. App.Config, é um arquivo [Ô]anexo[Ô] a sua aplicação que contém toda e qualquer configuração que você desejar. Você pode deixar todas elas em texto normal, todas encriptadas ou encriptar só algumas, é você quem decide isso. E sim, ela fica fora da aplicação, mas como disse, você pode encriptar só a string de conexão, se quiser.
Você pode colocar o access em rede, desde que a conexão que o seu programa faça com ele seja em um tempo de décimos de segundos! rsrsrs. Tipo assim, o usuário vai fazer uma pesquisa (SELECT). Nesse evento a consulta ao banco de dados é feita gerando um Open, assim que é terminada vc deve gerar um Close. As informações recuperadas devem ser guardadas na memória de uma matriz, ou grid, ou datatable, etc... Estou dizendo isso tudo porque muitos programadores (inclusive eu) no começo de carreira deixam a conexão sempre aberta. Aà é claro que vai dar BO se colocar em rede!
O caminho do banco você pode estar guardando em um arquivo externo. Mas como eu já falei em outros posts, guarde apenas o caminho do banco na rede. O que for imutável (Nome do Banco e a Senha), coloque na própria codificação do seu projeto. Guardar o caminho em um arquivo externo é uma boa opção pro caso de um dia houver mudança do ip do servidor, ou trocar a máquina servidora, etc...
Coloquei um pequeno exemplo de como vc fazer isso com um arquivo xml. Pode abrir o projeto no VS 2012 ou superior. Quando for executar provavelmente vai ter uma mensagem dizendo que não localizou o banco. Só coloque o diretório do banco (que está dentro da pasta Banco no projeto) no campo de texto quando solicitar e de OK.
Assim como os outros colegas, eu também te aconselho a migrar pra um SGDB mais confiável. Simplesmente por tudo isso que eles falarma! rsrsrsrs
Se optar pelo MySql, existe uma solução pra você converter access para MySql:
http://www.bullzip.com/products/a2m/info.php
Esse programa converte seu access em um arquivo SQL pra você importar no MySql. Se seu banco já tem registro eles vão estar nesse SQL também. Então quando fizer a importação não vai perder nada.
Quanto a instalação do MySql:
Ultimamente estou desenvolvendo em php e utilizo o WAMP Server pra fazer isso. Ele já vem com um servidor apache + php + MySql. E é extremamente fácil de instalar e utilizar, tanto na rede quanto localmente. Sem falar que é bem leve comparado ao Comunity que vc também pode estar baixando no Site do MySql.
Aà o que acontece, se vc desenvolve pra desktop, é só apontar o caminho para o IP do servidor (que é onde está o WAMP server instalado) e se necessário a porta dele (que geralmente é 3306). EX de string de conexão:
no Host
ou
na máquina cliente
onde 192.168.0.35 é o ip do Host(Servidor) e 3306 é a porta para o banco.
Outra coisa importante que não posso deixar de falar é que pra desenvolver com o MySql no Visual Studio você deve baixar o Connector/net no site do MySql e no seu projeto, colocar o MySql.Data nas referencias.
Se ficou alguma(s) dúvida(s) com relação ao MySql dá um grito!
Qualquer coisa estamos aÃ
O caminho do banco você pode estar guardando em um arquivo externo. Mas como eu já falei em outros posts, guarde apenas o caminho do banco na rede. O que for imutável (Nome do Banco e a Senha), coloque na própria codificação do seu projeto. Guardar o caminho em um arquivo externo é uma boa opção pro caso de um dia houver mudança do ip do servidor, ou trocar a máquina servidora, etc...
Coloquei um pequeno exemplo de como vc fazer isso com um arquivo xml. Pode abrir o projeto no VS 2012 ou superior. Quando for executar provavelmente vai ter uma mensagem dizendo que não localizou o banco. Só coloque o diretório do banco (que está dentro da pasta Banco no projeto) no campo de texto quando solicitar e de OK.
Assim como os outros colegas, eu também te aconselho a migrar pra um SGDB mais confiável. Simplesmente por tudo isso que eles falarma! rsrsrsrs
Se optar pelo MySql, existe uma solução pra você converter access para MySql:
http://www.bullzip.com/products/a2m/info.php
Esse programa converte seu access em um arquivo SQL pra você importar no MySql. Se seu banco já tem registro eles vão estar nesse SQL também. Então quando fizer a importação não vai perder nada.
Quanto a instalação do MySql:
Ultimamente estou desenvolvendo em php e utilizo o WAMP Server pra fazer isso. Ele já vem com um servidor apache + php + MySql. E é extremamente fácil de instalar e utilizar, tanto na rede quanto localmente. Sem falar que é bem leve comparado ao Comunity que vc também pode estar baixando no Site do MySql.
Aà o que acontece, se vc desenvolve pra desktop, é só apontar o caminho para o IP do servidor (que é onde está o WAMP server instalado) e se necessário a porta dele (que geralmente é 3306). EX de string de conexão:
no Host
SERVER = 127.0.0.1; DATABASE=seuBanco;UID=seuUsuario;PWD=suaSenha;
ou
SERVER = localhost; DATABASE=seuBanco;UID=seuUsuario;PWD=suaSenha;
na máquina cliente
SERVER = 192.168.0.35:3306; DATABASE=seuBanco;UID=seuUsuario;PWD=suaSenha;
onde 192.168.0.35 é o ip do Host(Servidor) e 3306 é a porta para o banco.
Outra coisa importante que não posso deixar de falar é que pra desenvolver com o MySql no Visual Studio você deve baixar o Connector/net no site do MySql e no seu projeto, colocar o MySql.Data nas referencias.
Se ficou alguma(s) dúvida(s) com relação ao MySql dá um grito!
Qualquer coisa estamos aÃ
já tentou rodar o sistema em um pc conectado na rede? Ex: PC 1 tem o sistema conectado na mesma rede que o PC2, pela rede usando o PC2 copiar o arquivo(Como atalho) e executar?
na imagem que mandei, estou usando o computador identificado com servidor, o atalho se encontra no pc residencia, normalmente funciona quando a rede esta bem configurada.
Agradeço a todos, em especial ao ACCIOLLY por ter muito colaborado com a solução para minha duvida, quanto ao Mysql, domino o básico, inclusive utilizo nessa mesma aplicação uma conexão com um servidor web, onde faço o controle de uso da aplicação, etc.
Irei fechar o tópico mais tarde.
Irei fechar o tópico mais tarde.
Tópico encerrado , respostas não são mais permitidas