none
Mudar Conexão Com MySql através de dados de uma text Box RRS feed

  • 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

    quinta-feira, 12 de janeiro de 2012 17:35

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
    sábado, 14 de janeiro de 2012 11:17
    Moderador

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
    quinta-feira, 12 de janeiro de 2012 17:59
    Moderador
  • 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

    sexta-feira, 13 de janeiro de 2012 02:59
  • 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
    sexta-feira, 13 de janeiro de 2012 11:03
    Moderador
  • 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

    sábado, 14 de janeiro de 2012 00:17
  • 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
    sábado, 14 de janeiro de 2012 11:17
    Moderador