Visual Basic HELP! | ZWAME Fórum
Discussão em 'Programação' iniciada por trikton, 20 de Março de 2007. (Respostas: 5; Visualizações: 1521)
Imaginem que querem uma aplicação que aceda a uma base de dados existente num servidor remoto. Usam o visual basic 2005 (.Net) para desenvolver a aplicação e adicionam-lhe um data source usando o wizard do visual studio.
Espectáculo, rápido e eficaz... rapidamente conseguem interagir com a base de dados usando a aplicação.. percorrendo todos os registos, adicionando novos.. eliminando.. etc felizes da vida
Um dia.. alguem resolve mudar o nome do servidor, ou mudar a base de dados de localização..
É o terror! Caput.. a aplicação não se liga a nada..torna-se inútil..
1 - Ir ao código fonte da aplicação, alterar-lhe a connection String, compilá-la e distribui-la pelos utilizadores???!!!!
2 - Precaver-me desta situação (logo na 1ª implementação) e arranjar uma forma dinâmica de definir a connection string?
Gosto da segunda hipotese! Mas não faço ideia como implementar isto! (sem por o wizard de lado)
Gostava de ouvir as vossas ideias (ler, claro). Obrigado.
Provavelmente se utilizares o wizard, (não tenho bem a certeza como funciona :|) ele definiu o nome da base de dados, utilizador e password através de algum driver de comunicação certo? ODBC? ADO? Mas de quaquer maneira para alguem te poder ajudar mais concretamente podias mostrar a string de inicialização da tua comunicação com a db, assim como que db usas. Assim seria mais facil identificar como ele comunica com a db (possivelmente atravez de um driver, data source). Possivelmente só teras que alterar as definições do data source.
Da uma vista de olhos: http://www.pointersw.com/suportedrivers.html
http://www.mztools.com/articles/2007/MZ011.htm (talvez muito util)
Bem o que faço (isto não é no wizard), usando a força bruta é:
PrivateSub ListaPI_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
Dim datasource AsString
Dim conString AsString
datasource = "C:\BD\teste.mdb "
conString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = "
con.ConnectionString = conString & datasource & ";Jet OLEDB atabase Password=blabla;"
Dim Sql AsNewString("SELECT NumPedido,Data,Instalacao,IdentZonaTrab,DescricaoTrab,RespTrab,Periodo1Data FROM TPedidosIndisponibilidade ORDER BY NumPedido")
MsgBox("Erro ao Abrir a Base de Dados!" & ControlChars.CrLf & "Certifique-se que a Base de Dados é a correcta!", MsgBoxStyle.Exclamation)
Quanto ao wizard.. não sei onde ele guarda a info sobre a localização da base de dados, mas vou tratar disso ainda esta noite.
No .Net 2005 se criares os DataSet's por wizard, o datasource e data adapters ficam determinados à connection string que estabeleceste na altura da sua criação.
No entanto no web.config podes estabelecer uma connection string, se for numa aplicação web e não windows forms claro.
E agora estou a falar de cor, pq não sei se a connection string aí estabelecida se é a efectiva para os DataSources, mas se assim for podes meter ai uma variavel de forma a alterares dinamicamente.
Tendo agora reparado no codigo, vi que tu proprio defines a connection string e a aplicação é que define a password. Parece-me que o mais facil serias guardar o nome da BD, localização e password num ficheiro externo à aplicação...
E mais tarde se quisesses alterar esses dados da ligação à database, só terias que redistribuir/editar esse ficheiro à parte. Convinha que ao guardares essas variaveis criasses um sistema de encriptação para gravar as variaveis no ficheiro.(po causa da segurança) Depois só terias que fazer com que a aplicação fosse buscar essas infos da db ao ficheiro externo
Acho que é o mais simples
Era exactamente isso que eu fazia, com o chamado método "bruto", permitia que na primeira utilização da aplicação, o utilizador configura-se a localização da base de dados e sempre que esta muda-se de localização o utilizador era avisado.A localização da bd era guardada num ficheiro externo gerado na localização de startup da aplicação.
Agora.. usando o método wizard...eu pensava que a aplicação ficava restringida á connection string criada a quando junção de uma data source ao projecto, mas não, as coisas são ainda mais simples.
O wizard guarda a connection string nos settings do projecto (Solution Explorer -> My Project -> Settings) e permite a sua alteração. Assim basta ter uma opção de configuração da localização da base de dados na aplicação desenvolvida , permitindo ao utilizador a definição da mesma.