Usuário com melhor resposta
ALTERAR CONNECTION DATASET

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