Usuário com melhor resposta
Mudar Conexão Com MySql através de dados de uma text Box

Pergunta
-
Boa tarde, sou iniciante em C# e estou com um problema
Em meu aplicativo, preciso alterar a conexão com o Servidor( Servidor, Usuário, password e Banco de Dados), através de um form com textbox contendo os dados dessa nova conexão.
no Form com dados de conexão está assim:
public string servidorMySql = @"server=localhost;uid=root;pwd='';database=flaviofe_CatalogoDiscos"; private void btnConectar_Click(object sender, EventArgs e) { servidorMySql = @"server=" + txtServer.Text + ";uid=" + txtUser.Text + ";pwd=" + txtSenha.Text + ";database=" + txtData.Text; }
porém, quando uso esse botão conectar, não sei como faço para o form principal reconectar com esses novos dados. (O Form principal, ao iniciar usa o valor da variável "servidorMysql" para se conectar.
Preciso de qualquer informação que possa me ajudar com esse problema.
Obrigado,
Flávio
Respostas
-
Olá,
O que vc precisa fazer eh o seguinte:
No Form1 criar um método público que receba os dados, assim:
public void AtualizaConexao(string novaConexao)
{
minhaVariavelDeConexao = new SqlConnection(novaConexao);
}
Isso fara com que vc possa passar sua nova conexao por parâmetro. Outro ponto importante é quando vc for abrir o Form2, seu código deve ficar assim:
Form2 x = new Form2();
x.Owner = this;
X.Show();
A propriedade Owner indica ao Form2 quem é o seu formulário proprietário, no caso a instância aberta de Form1.
No Form2 vc terá de adicionar a seguinte linha logo depois de reconstruir sua nova string de conexão:
Form1 x = (Form1) this.Owner;
x.AtualizarConexao(variavelComSuaNovaStringDeConexao);
Este é o modo mais simples de fazer a conexão entre dois formulários.
ps.: desculpe a formatação da resposta, mas é que estou no PoupaTempo respondendo pelo celular :)
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.wordpress.com/
Twitter: @ferhenrique- Sugerido como Resposta AndreAlvesLimaModerator segunda-feira, 23 de janeiro de 2012 19:36
- Marcado como Resposta AndreAlvesLimaModerator quarta-feira, 18 de abril de 2012 20:31
Todas as Respostas
-
Olá Flávio,
Veja se isso ajuda:
public partial class Form1 : Form { public Form1() { InitializeComponent(); } string _currentConnectionString = string.Empty; SqlConnection _currentConnection = null; private void Form1_Load(object sender, EventArgs e) { _currentConnectionString = "<coloque sua connection string default aqui>"; CriarNovaConexao(); } private void button1_Click(object sender, EventArgs e) { _currentConnectionString = @"server=" + txtServer.Text + ";uid=" + txtUser.Text + ";pwd=" + txtSenha.Text + ";database=" + txtData.Text; CriarNovaConexao(); } private void CriarNovaConexao() { _currentConnection = new SqlConnection(_currentConnectionString); } }
ps.: Fiz utilizando SQLConnection pois não tenho o provider do MySQL aqui...[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.wordpress.com/
Twitter: @ferhenrique -
Bom dia Fernando,
Ajudou muito, porém não resolveu.
Acho que vou refazer tudo pois tenho um form1 que busca dados de conexão em um form 2 que contém os botões e os textbox.
a varável que contém os dados de conexão estão no form2 e quando eu fecho, não atualiza os dados de conexão no form1.
Vou tentar deixar tudo em um só Form. Será mais prático.
Mesmo assim, muito obrigado.
Flávio
-
Entendo,
De que modo vc esta fazendo para passar os dados do Form2 para o Form1?
Talvez podemos atuar neste ponto e quem sabe resolver.
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.wordpress.com/
Twitter: @ferhenrique -
Boa Noite Fernando,
Agradeço sua paciência,
A verdade é que realmente sou bem leigo (para não dizer "ignorante") ainda a respeito desse assunto.
O Evento "click" no botão form2 altera o valor da variável com os dados do servidor com o text box. E ao fechar o form 2 há um evento que atualiza o form 1 (já tentei "form".update e ".refresh ) que usa os dados dessa variável para conectar.
Mas, nada muda...
coloquei um "label" para exibir o valor da variável no form2 e outro no form 1(principal).
No form 2 a variavel realmente é alterada.
No form 1 nada muda...
Acho que realmente não sei como fazer essa transferência de dados...
Se essa informação ajudou, me dê uma dica,
Mas não se preocupe, não é um projeto sério, é algo que estou usando para aprender, portanto posso refazer a qualquer momento.
Obrigado,
Flávio
-
Olá,
O que vc precisa fazer eh o seguinte:
No Form1 criar um método público que receba os dados, assim:
public void AtualizaConexao(string novaConexao)
{
minhaVariavelDeConexao = new SqlConnection(novaConexao);
}
Isso fara com que vc possa passar sua nova conexao por parâmetro. Outro ponto importante é quando vc for abrir o Form2, seu código deve ficar assim:
Form2 x = new Form2();
x.Owner = this;
X.Show();
A propriedade Owner indica ao Form2 quem é o seu formulário proprietário, no caso a instância aberta de Form1.
No Form2 vc terá de adicionar a seguinte linha logo depois de reconstruir sua nova string de conexão:
Form1 x = (Form1) this.Owner;
x.AtualizarConexao(variavelComSuaNovaStringDeConexao);
Este é o modo mais simples de fazer a conexão entre dois formulários.
ps.: desculpe a formatação da resposta, mas é que estou no PoupaTempo respondendo pelo celular :)
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.wordpress.com/
Twitter: @ferhenrique- Sugerido como Resposta AndreAlvesLimaModerator segunda-feira, 23 de janeiro de 2012 19:36
- Marcado como Resposta AndreAlvesLimaModerator quarta-feira, 18 de abril de 2012 20:31