none
ALTERAR CONNECTION DATASET RRS feed

  • Pergunta

  • Bom Dia!

    Andei pesquisando e encontrei varios tópicos da mesma dúvida que a minha, porém não achei a solução.

    Minha necessidade é usar um DataSet para facilitar o serviço, mas preciso que o DataSet responda por uma string connection que possa ser alterada. Como segue na print minha aplicação tem as variáveis que ficam no Properties Settings Default e através desse código abaixo monta a string connection: 

    public class Conexao
        {
            public static string Cn = "Data Source = " + Properties.Settings.Default.Servidor + "" + Properties.Settings.Default.Instancia + "; Initial Catalog = " + Properties.Settings.Default.Banco_Dados + "; User Id = " + Properties.Settings.Default.Login + "; Password = " + Properties.Settings.Default.Senha + ";";
            
        }

    Quando criado um DataSet ele cria uma String Connection no Properties como Cadeia de Conexão onde não é possível fazer alteração se mudo para variável de forma string onde poderia atribuir minha conexão como faço no resto da aplicação o DataSet some, ele só funciona e aparece se tiver configurado como Cadeia de Conexão. 

    Portanto necessito de uma forma que eu consiga alterar a connection do meu DataSet para que ele corresponda a conexão que tiver configurada para minha aplicação RESSALTANDO QUE na tela de login da minha aplicação eu consigo alterar a conexão através de um formulário que depois de preenchido e clicar no botão salvar ele manda os dados do texbox para a variável que esta no Properties como segue a print e depois através ai do código monta a connection string.

    SEGUE A PRINT:

    quarta-feira, 31 de janeiro de 2018 11:50

Respostas

  • Veja se o código deste link te ajuda: https://blogs.msdn.microsoft.com/marcelolr/2010/04/06/changing-the-connection-string-for-typed-datasets/


    DataSet1 ds;
    DataSet1TableAdapters.DocumentsTableAdapter adapter;
    string desiredConnectionString;
    
    // Create an adapter and verify it's reading the default settings.
    adapter = new DataSet1TableAdapters.DocumentsTableAdapter();
    MessageBox.Show("Connection from settings: \r\n" + 
        Properties.Settings.Default.DistXsltDbConnectionString);
    MessageBox.Show("Original connection: \r\n" + 
        adapter.Connection.ConnectionString);
    
    // Customize the connection string.
    var builder = new SqlConnectionStringBuilder(
        Properties.Settings.Default.DistXsltDbConnectionString);
    builder.DataSource = builder.DataSource.Replace(".", Environment.MachineName);
    desiredConnectionString = builder.ConnectionString;
    
    // Set it directly on the adapter.
    adapter.Connection.ConnectionString = desiredConnectionString;
    MessageBox.Show("Modified connection: \r\n" + 
        adapter.Connection.ConnectionString);
    
    ds = new DataSet1();
    adapter.Fill(ds.Documents);
    MessageBox.Show("Row count: " + ds.Documents.Rows.Count);
    
    // Or change the setting directly before creating the adapter:
    Properties.Settings.Default["DistXsltDbConnectionString"] = desiredConnectionString;
    adapter = new DataSet1TableAdapters.DocumentsTableAdapter();
    MessageBox.Show("Modified setting connection: \r\n" +
        adapter.Connection.ConnectionString);
    
    ds = new DataSet1();
    adapter.Fill(ds.Documents);


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    • Marcado como Resposta Lucio Henrique quarta-feira, 31 de janeiro de 2018 15:37
    quarta-feira, 31 de janeiro de 2018 15:13

Todas as Respostas

  • Veja se o código deste link te ajuda: https://blogs.msdn.microsoft.com/marcelolr/2010/04/06/changing-the-connection-string-for-typed-datasets/


    DataSet1 ds;
    DataSet1TableAdapters.DocumentsTableAdapter adapter;
    string desiredConnectionString;
    
    // Create an adapter and verify it's reading the default settings.
    adapter = new DataSet1TableAdapters.DocumentsTableAdapter();
    MessageBox.Show("Connection from settings: \r\n" + 
        Properties.Settings.Default.DistXsltDbConnectionString);
    MessageBox.Show("Original connection: \r\n" + 
        adapter.Connection.ConnectionString);
    
    // Customize the connection string.
    var builder = new SqlConnectionStringBuilder(
        Properties.Settings.Default.DistXsltDbConnectionString);
    builder.DataSource = builder.DataSource.Replace(".", Environment.MachineName);
    desiredConnectionString = builder.ConnectionString;
    
    // Set it directly on the adapter.
    adapter.Connection.ConnectionString = desiredConnectionString;
    MessageBox.Show("Modified connection: \r\n" + 
        adapter.Connection.ConnectionString);
    
    ds = new DataSet1();
    adapter.Fill(ds.Documents);
    MessageBox.Show("Row count: " + ds.Documents.Rows.Count);
    
    // Or change the setting directly before creating the adapter:
    Properties.Settings.Default["DistXsltDbConnectionString"] = desiredConnectionString;
    adapter = new DataSet1TableAdapters.DocumentsTableAdapter();
    MessageBox.Show("Modified setting connection: \r\n" +
        adapter.Connection.ConnectionString);
    
    ds = new DataSet1();
    adapter.Fill(ds.Documents);


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    • Marcado como Resposta Lucio Henrique quarta-feira, 31 de janeiro de 2018 15:37
    quarta-feira, 31 de janeiro de 2018 15:13
  • Ola,

        Acho que você se refere a ConnectionString do seu SqlDataAdapter quando quer dizer DataSet correto?

        Voce poderia criar uma classe partial do SqlDataAdapter do seu Dataset e carregar o connectionstring do seu properties, porem não tem um metodo virtual no qual voce possa fazer isso automaticamente.

         Então a solução é que toda vez que voce for executar um comando voce terá que setar a propriedade "Connection" com um novo objeto SqlConnection("string de conexão");


    Microsoft Community Contributor

    quarta-feira, 31 de janeiro de 2018 15:22
    Moderador
  • Sera que se eu fizer isso vai funcionar?:

    Properties.Settings.Default["StringGeradaPeloDataSet"] = Conexao.Cn;


    quarta-feira, 31 de janeiro de 2018 15:23
  • Esta é uma das possibilidade de acordo com o link que indiquei, mas nunca tentei. Não costumo utilizar Typed DataSet .

    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    quarta-feira, 31 de janeiro de 2018 15:26
  • Não não,

    Estou falando do DataSet mesmo quando você clica na aba Fonte de Dados e adiciona uma nova fonte de Dados que cria junto com os arquivos do Sistema um DataSet mesmo.

    quarta-feira, 31 de janeiro de 2018 15:28
  • Cara Funcionou perfeitamente somente com essa linha de código abaixo. Agora facilita o trabalho na hora de criar o DataGridView ja arrasta do DataSet ...Muito menos trabalho que ter que ficar fazendo tudo via código...Bastou somente no Load de cada forms colocar o código ai a string do DataSet passa a corresponder de acordo com a configuração que fiz nas prints do inicio do post.

    Vlw mesmo,

    Obrigado!

    Properties.Settings.Default["StringGeradaPeloDataSet"] = Conexao.Cn;

    quarta-feira, 31 de janeiro de 2018 15:37