1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Visual Basic HELP!

Discussão em 'Programação' iniciada por trikton, 20 de Março de 2007. (Respostas: 5; Visualizações: 1398)

  1. trikton

    trikton Power Member

    Olá!

    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..

    Solução?
    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.

    Cumps
     
  2. msdevweb

    msdevweb Power Member

    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)


    Abraço.
     
    Última edição: 20 de Março de 2007
  3. trikton

    trikton Power Member

    Oix,

    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
    Try

    datasource = "C:\BD\teste.mdb "
    conString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = "
    con.ConnectionString = conString & datasource & ";Jet OLEDB:Database Password=blabla;"
    con.Open()

    Dim Sql AsNewString("SELECT NumPedido,Data,Instalacao,IdentZonaTrab,DescricaoTrab,RespTrab,Periodo1Data FROM TPedidosIndisponibilidade ORDER BY NumPedido")
    da = New OleDb.OleDbDataAdapter(Sql, con)

    'limpa o dataset
    ds.Clear()

    da.Fill(ds, "Lista")
    con.Close()


    Catch ex As Exception
    MsgBox("Erro ao Abrir a Base de Dados!" & ControlChars.CrLf & "Certifique-se que a Base de Dados é a correcta!", MsgBoxStyle.Exclamation)
    Me.Close()
    EndTry

    EndSub


    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.

    Abraço
     
  4. Mavors

    Mavors Power Member

    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.
     
  5. msdevweb

    msdevweb Power Member

    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 :)

    Um Abraço.
     
  6. trikton

    trikton Power Member

    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.

    Obrigado

    Abraço
     

Partilhar esta Página