none
String de COnexão Urgente! RRS feed

  • Pergunta

  • Amigos, boa tarde!

    Tenho uma aplicação em C# + SQL Server 2008 + Linq to SQL.

    Gostaria de saber como faço para alterar em tempo de execução minha String de Conexão que fica no Arquivo .SETTINGS? o Escopo é Application.

    Eu consigo alterar e gravar, mais quando vou olhar no Arquivo.Settings ele não alterou.

    Por favor me ajudem!

    WATSON PASSOS

     


    Watson Passos Especializando em Gerenciamento de Projetos Graduado em Sistemas de Informação
    segunda-feira, 25 de outubro de 2010 14:31

Respostas

Todas as Respostas

  • Nao entendi bem a sua duvida: 

    "Eu consigo alterar e gravar, mais quando vou olhar no Arquivo.Settings ele não alterou."

    explica melhor



    Just Be Humble Malange!
    segunda-feira, 25 de outubro de 2010 22:06
  • Oi Malange,

     

    Na verdade o que eu quero é uma forma de alterar em tempo de execução o arquivo chamado Settings que fica dentro da pasta properties do meu projeto.

    Nela eu tenho a minha string de conexão.

    O que eu devo fazer para alterar esse arquivo em tempo de execução, uma vez que uma ConectionString tem o scopo Application e é somente leitura?

     

    Obrigado!

    Watson Passos


    Watson Passos Especializando em Gerenciamento de Projetos Graduado em Sistemas de Informação
    segunda-feira, 25 de outubro de 2010 22:38
  • WPassos,

    As configurações no escopo da aplicação não podem ser alteradas em tempo de execução, é necessário reiniciar a aplicação para que as configurações tenham efeito.

    Veja o que diz a documentação:

    Application-scoped settings can be used for information such as a URL for a Web service or a database connection string. These values are associated with the application. Therefore, users cannot change them at run time.

    Uma opção é alterar para o escopo do usuário ou criar uma aplicação separada que realiza a configuração (alteração do arquivo .config). O problema é que para alterar o arquivo de configuração é necessário ter permissões elevadas.

    Att.

    Ari C. Raimundo
    MCAD, MCTS
    http://araimundo.blogspot.com

    segunda-feira, 25 de outubro de 2010 22:54
    Moderador
  • @Ari

    Esta certo.

    Como tu mesmo disseste, e so de leitura, se voce alterar para user, ele permite alterar... Nao dera o erro que de leitura. Acho que voce deveria criar um config apart e pegar a conecao apartir dai. Seria a opcao acertada.

    De uma outra forma, leia o que o Ari escreveu.

    Tu tens de cirar uma class enum, que vai suportar as diferentes conecoes, oledb, sqlserver, oracle, mysql.

     public enum DataProvider

        {

            SqlSever, Oledb

        }


    Just Be Humble Malange!
    segunda-feira, 25 de outubro de 2010 23:08
  • Fiz um teste e funciona perfeitamente. tu nao vez a alteracao no teu project ou programa.

    Mudei a string para user. No scope.

     

     

            # region save setting

            private void savesetting(string aqui)

            {

              string lovess = WindowsFormsApplication2010.Properties.Settings.Default.Connection;

              if (lovess.Length > 0)

              {

                  Properties.Settings.Default.Connection = aqui;

                  Properties.Settings.Default.Save();

              }

          }

            # endregion save setting

    Ele grava nao nao vejo a alteracao tambem. Depois volto com mais noticias. Esta tarde aqui na englaterra. Vou dormir.


    Just Be Humble Malange!
    segunda-feira, 25 de outubro de 2010 23:37
  • O problema 'e que eu uso LINQ TO SQL.

    Quando crio um novo DataContext, ele ja se conecta em uma de minhas conexoes do arquivo Setting. Se eu mudo o Escopo para USER, as minhas DataContext, param de apontar para a Conexao.

     

    De qualquer forma, obrigado a todos pela ajuda.

     

    Abracos!

    WATSON PASSOS


    Watson Passos Especializando em Gerenciamento de Projetos Graduado em Sistemas de Informação
    segunda-feira, 25 de outubro de 2010 23:43
  • Watson,

    A classe DataContext tem um construtor que possibilita informar a connection string completa. Utilize esse construtor ao instanciar o seu DataContext.

    DataContext Constructor (String)
    http://msdn.microsoft.com/en-us/library/bb350721.aspx

    Att.

    Ari C. Raimundo
    MCAD, MCTS
    http://araimundo.blogspot.com

    • Marcado como Resposta WPassos sexta-feira, 29 de outubro de 2010 19:06
    quinta-feira, 28 de outubro de 2010 01:23
    Moderador