none
Consulta SQL jogar num TextBox RRS feed

Respostas

  • Cara seguinte nunca trabalhei com mySql apenas com sqlServer então vou te mostrar como eu faria no seu caso usando o sql

    Bom seguinte primeiro vamos uma tabela no banco de dados para armazenar suas cidades e ufs

    então roda a seguinte scrip nele

     

     

      

     

     

     

    CREATE TABLE tblCidade(
    
    nome varchar(50) NOT NULL,
    
    idC bigint NOT NULL,
    
    PRIMARY KEY(idC))
    
    CREATE TABLE tblUF(
    
    nomeUF varchar(2) NOT NULL,
    
    idU bigint NOT NULL,
    
    PRIMARY KEY(idU))
    
    CREATE TABLE ufCIDADE(
    
    idU bigint NOT NULL,
    
    idC bigint NOT NULL,
    
    FOREIGN KEY(idU) REFERENCES tblUF,
    
    FOREIGN KEY(idC)REFERENCES tblCidade)
    
     

    depois disto insera seus dados na tabela e não se esqueça que a terceira tabela que citei aki é para relacionar as cidades com suas respectivas ufs então os ID de Cidade tem que corresponder com os IDs de UF para q o select q vou te passar de certo

    Depois de criadas as tabelas va a seu projeto e crie uma classe que vai baixar os valores do banco

    primeiro crie um método que preencha seu combobox e não se esqça de adicionar os namespaces System.Windows.Forms e System.Data.SqlCliente em sua classe

    public ComboBox preencheCombo(ComboBoc cbx)

    {

    SqlConnection cnx = new SqlConnection();

    cnx.ConnectionString = "Data source = caminho do banco;; initial catalog = nome do banco; integrated security = true";

    string cmd = "select * from tblCidade";

    SqlCommand comando = new SqlCommand(cmd, cnx);

    cnx.Open();

    SqlDataReader dr = comando.ExecuteNonReader();

    while(dr.Read())

    {

    cbx.Items.Add((string)dr["nome"]);

    }

    cbx.Close();

    return cbx;

    }

    coloque este método dentro do load do formulário q contem seu combo e passe o mesmo como parametro para este método

    Feito isso vamos criar o outro método q retornara um label

    public Label mostraUf(Label lbl, string busca)

    {

    SqlConnection cnx = new SqlConnection();

    cnx.ConnectionString = "Data source = caminho do banco;; initial catalog = nome do banco; integrated security = true";

    string cmd = "SELECT nomeUF FROM ufCIDADE inner join tblUF on tblUF.idU = ufCIDADE.idU where ufCIDADE.idC = (select tblCidade.idC from tblCidade where tblCidade.nome = '"+ busca+"')";

    SqlCommand comando = new SqlCommand(cmd, cnx);

    cnx.Open();

    SqlDataReader dr = comando.ExecuteNonReader();

    while(dr.Read())

    {

    lbl.Text = ((string)dr["nomeUF"]);

    }

    cbx.Close();

    return lbl;

    }

    este método voce adicione dentro do evento  private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

    da seguinte maneira

     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

    {

    SuaClasse obj = new SuaClasse();

    obj.mostraUF(label1, comboBox1.SelectedItem.ToString());

    }

    faça isto e me diga qual foi seu resultado

    Att Edney qlqr coisa só me procurar pelo forum

    sábado, 5 de junho de 2010 02:54
  • segunda-feira, 24 de maio de 2010 14:59

Todas as Respostas

  • Segue um exemplo amigo, da uma estudada em cima desses codigos,

     

    no inicio coloque:

     

    using System.Data.SqlClient;

     

        private void button2_Click(object sender, EventArgs e)
        {
          //Abre a conexão com o banco de dados
          SqlConnection objConn = new SqlConnection("aqui sua string de conexão");
          objConn.Open();
    
          try{
    
            //seleciona o campo nome da tabale "TABELA"
            SqlCommand cmd = new SqlCommand("SELECT NOME FROM TABELA WHERE MATRICULA=@MATRICULA",objConn);
            cmd.Parameters.Add("@MATRICULA", SqlDbType.Int).Value = Convert.ToInt32(this.TextBoxMatricula.Text);
    
            SqlDataReader objReader = cmd.ExecuteReader();
    
            //se existir dados mostra no textbox TextBoxNome
            if (objReader.Read())
              this.TextBoxNome.Text = objReader["NOME"].ToString();
    
    
            objReader.Close();
    
          }catch(Exception ex){
            //se ocorrer algum erro mostra uma mensagem
            MessageBox.Show(ex.Message);
          }
          finally
          {
            objConn.Close(); //fecha a conexão
            objConn.Dispose(); //libera da memoria
          }
        }


    msn: poseidonfba@hotmail.com
    quarta-feira, 19 de maio de 2010 10:29
  • Bem eu tenho um COMBOBOX(CIDADE) e um LABEL(UF)

     

    Gostaria de realizar o seguinte quando o COMBOBOX selecionar aquela cidade do banco ele fosse jogando a UF da cidade q ta no banco no label....

     

    Fiz esse codigo mais nao deu certo...

     

    commS = new MySqlCommand("select idcidade,nome,uf from cidade");

    #### NESSA LINHA ABAIXO ESTA DANDO ERROR DE STRING, ELE PEDE UMA STRING E NAO UM MYSQLCOMMAND....

                MySqlDataAdapter da = new MySqlDataAdapter(commS, mConn);

                DataTable dataresul = new DataTable();

                da.Fill(dataresul);

                comboBox1.DataSource = dataresul;

                comboBox1.DisplayMember = "nome";

                rs = commS.ExecuteReader;

                if (rs.Read())

                {

                    label13.Visible = true;

                    label13.Text = rs["uf"].ToString();

                }

     

    Outra pergunta hehe , nesse codigo aki comboBox1.ValueMember = "idcidade"; eu pego o id da cidade selecionada no combobox, como eu faco para armazenar esse codigo no banco na tabela de pessoa?

     

     

    Qual e o evento para ser realizado aquela tarefa so quando o combo tiver selecionado ... tipo onfocus algo do tipo

     

    Obrigado

    quinta-feira, 20 de maio de 2010 03:52
  • Tens de realizar uma query con condicao que esta na tua Combobox.  Podes usar parametro. O teu codigo nao tem "condicao" ou um campo especifico de procura, ela simplesmente carrega toda informacao da tabela.

    Eu te aconselharia a usar bindingsource. Algo assim:

      private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

            {

               commS = new MySqlCommand("select * from cidade Where uf=@uf");

                commS.Parameters.AddWithValue("@uf", this.comboBox1.SelectedItem);

                MySqlDataAdapter da = new MySqlDataAdapter(commS, mConn);

                DataTable dataresul = new DataTable();

                da.Fill(dataresul);

                BindingSource bs = new BindingSource();

                bs.Datasource= dataresult;

                    {

                    label13.Visible = true;

                   this. label13.DataBindings.Add("Text", bs, "uf", true);

               }

    }

     

    Se o SelectedItem nao funcionar usa o text

     


    Just Be Humble Malange!
    quinta-feira, 20 de maio de 2010 07:57
  • Bem esse codigo da error ,seguinte nao precisa de parametros consulta simples select * from cidade

     

    onde eu jogo o nome da cidade no combobox, 

    depois jogo o uf em um label,

    e por ultimo jogo o idcidade no banco.

                string t = "select idcidade,nome,uf from cidade";

                MySqlDataAdapter da = new MySqlDataAdapter(t, mConn);

                DataTable dataresul = new DataTable();

                da.Fill(dataresul);

                comboBox1.DataSource = dataresul;

     

                comboBox1.DisplayMember = "nome";

                comboBox1.ValueMember = "idcidade";

     

                if(dataresul.Rows.Count > 0 ) 

                {

                    label13.Text = dataresul.Rows[0]["uf"].ToString();

                }

     

    #### OBSERVACAO########

    Esse codigo acima ele joga as cidades, ele guarda o id(so que nao sei como pegar lo de volta), e o uf eu consigo jogar no label, no entanto quando muda para outra cidade ele continua com a mesma UF da cidade passada.....

     

    Qual seria o evento do combobox onde so realizaria algo quando ele tivesse em focu, ou selecionado ?

     

    Esse codigo acima foi oq cheguei mais proximo do resultado q quero.

     

    Obrigado ;)

    quinta-feira, 20 de maio de 2010 14:29
  • no teu combobox   private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    Just Be Humble Malange!
    quinta-feira, 20 de maio de 2010 22:54
  • Desculpa amigo mais coloquei o meu metodo que criei dentro desse evento e nada se fez, nem aparecer as cidades listadas está...

    Alguem poderia me ajudar ;)

     

    obrigago

    sexta-feira, 21 de maio de 2010 04:23
  • faz um favor, no teu formload, coloca este codigo. no form em que se encontra a tua combobox.

      commS = new MySqlCommand("select * from cidade");

      MySqlDataAdapter da = new MySqlDataAdapter(commS, mConn);

      DataTable dataresul = new DataTable();

      da.Fill(dataresul);

    comboBox1.DataSource = dataresul;

    comboBox1.DisplayMember = "nome";

     comboBox1.ValueMember = "idcidade";

     

    agora no teu combobox 

     commS = new MySqlCommand("select * from cidade Where uf=@uf");

                commS.Parameters.AddWithValue("@uf", this.comboBox1.SelectedItem);

                MySqlDataAdapter da = new MySqlDataAdapter(commS, mConn);

                DataTable dataresul = new DataTable();

                da.Fill(dataresul);

                BindingSource bs = new BindingSource();

                bs.Datasource= dataresult;

                    {

                    label13.Visible = true;

                   this. label13.DataBindings.Add("Text", bs, "uf", true);

               }

     


    Just Be Humble Malange!
    sexta-feira, 21 de maio de 2010 12:25
  • Malange segui oq vc pediu para eu realizar no entanto...

     

     

    Error 1 The best overloaded method match for 'MySql.Data.MySqlClient.MySqlDataAdapter.MySqlDataAdapter(string, MySql.Data.MySqlClient.MySqlConnection)' has some invalid arguments C:\Users\user\Documents\Visual Studio 2008\Projects\PeShow\PeShow\FFabricanteNovo.cs 55 35 PeShow

    Error 2 Argument '1': cannot convert from 'MySql.Data.MySqlClient.MySqlCommand' to 'string' C:\Users\user\Documents\Visual Studio 2008\Projects\PeShow\PeShow\FFabricanteNovo.cs 55 56 PeShow

    Error 3 The best overloaded method match for 'MySql.Data.MySqlClient.MySqlDataAdapter.MySqlDataAdapter(string, MySql.Data.MySqlClient.MySqlConnection)' has some invalid arguments C:\Users\user\Documents\Visual Studio 2008\Projects\PeShow\PeShow\FFabricanteNovo.cs 197 35 PeShow

    Error 4 Argument '1': cannot convert from 'MySql.Data.MySqlClient.MySqlCommand' to 'string' C:\Users\user\Documents\Visual Studio 2008\Projects\PeShow\PeShow\FFabricanteNovo.cs 197 56 PeShow

    Error 5 'System.Windows.Forms.BindingSource' does not contain a definition for 'Datasource' and no extension method 'Datasource' accepting a first argument of type 'System.Windows.Forms.BindingSource' could be found (are you missing a using directive or an assembly reference?) C:\Users\user\Documents\Visual Studio 2008\Projects\PeShow\PeShow\FFabricanteNovo.cs 205 16 PeShow

    Error 6 The name 'dataresult' does not exist in the current context C:\Users\user\Documents\Visual Studio 2008\Projects\PeShow\PeShow\FFabricanteNovo.cs 205 29 PeShow



    Da esses erros...

    Continuei mesmo assim e executar o projeto, e vi ele joga as cidades no combo no entanto o label continua a mesma coisa quando seleciona outra cidade ele fica o uf com a antiga selecionada....


    Coloquei assim e o outro dentro do load do form (que ja estava)

     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
    commS = new MySqlCommand("select * from cidade Where uf=@uf");

                commS.Parameters.AddWithValue("@uf", this.comboBox1.SelectedItem);

                MySqlDataAdapter da = new MySqlDataAdapter(commS, mConn);

                DataTable dataresul = new DataTable();

                da.Fill(dataresul);

                BindingSource bs = new BindingSource();

                bs.Datasource= dataresult;

                    {

                    label13.Visible = true;

                   this. label13.DataBindings.Add("Text", bs, "uf", true);

               }

    }

     

    sexta-feira, 21 de maio de 2010 15:12
  • usa isto, substitui assim:

    ommS.Parameters.AddWithValue("@uf", this.comboBox1.Text.ToString());


    Just Be Humble Malange!
    sábado, 22 de maio de 2010 09:02
  • desculpe - me mais continua com o mesmo error depois dessa modificacao...

    commS = new MySqlCommand("select * from cidade Where uf=@uf");

    ##### ERROR AKI ######

    MySqlDataAdapter da = new MySqlDataAdapter(commS, mConn);

     

    nessa linha principalmente, o error eu sei oq eh mais nao vejo outra maneira de realizar oq desejo, esta bem claro o error o MYSQLDATAadatper nao aceita mysqlcommand como parametro , SÓ aceita string.

     

    segunda-feira, 24 de maio de 2010 14:39
  • segunda-feira, 24 de maio de 2010 14:59
  • Henrique,

    Alguma novidade quanto a essa sua dúvida?


    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    sexta-feira, 4 de junho de 2010 00:49
    Moderador
  • Cara seguinte nunca trabalhei com mySql apenas com sqlServer então vou te mostrar como eu faria no seu caso usando o sql

    Bom seguinte primeiro vamos uma tabela no banco de dados para armazenar suas cidades e ufs

    então roda a seguinte scrip nele

     

     

      

     

     

     

    CREATE TABLE tblCidade(
    
    nome varchar(50) NOT NULL,
    
    idC bigint NOT NULL,
    
    PRIMARY KEY(idC))
    
    CREATE TABLE tblUF(
    
    nomeUF varchar(2) NOT NULL,
    
    idU bigint NOT NULL,
    
    PRIMARY KEY(idU))
    
    CREATE TABLE ufCIDADE(
    
    idU bigint NOT NULL,
    
    idC bigint NOT NULL,
    
    FOREIGN KEY(idU) REFERENCES tblUF,
    
    FOREIGN KEY(idC)REFERENCES tblCidade)
    
     

    depois disto insera seus dados na tabela e não se esqueça que a terceira tabela que citei aki é para relacionar as cidades com suas respectivas ufs então os ID de Cidade tem que corresponder com os IDs de UF para q o select q vou te passar de certo

    Depois de criadas as tabelas va a seu projeto e crie uma classe que vai baixar os valores do banco

    primeiro crie um método que preencha seu combobox e não se esqça de adicionar os namespaces System.Windows.Forms e System.Data.SqlCliente em sua classe

    public ComboBox preencheCombo(ComboBoc cbx)

    {

    SqlConnection cnx = new SqlConnection();

    cnx.ConnectionString = "Data source = caminho do banco;; initial catalog = nome do banco; integrated security = true";

    string cmd = "select * from tblCidade";

    SqlCommand comando = new SqlCommand(cmd, cnx);

    cnx.Open();

    SqlDataReader dr = comando.ExecuteNonReader();

    while(dr.Read())

    {

    cbx.Items.Add((string)dr["nome"]);

    }

    cbx.Close();

    return cbx;

    }

    coloque este método dentro do load do formulário q contem seu combo e passe o mesmo como parametro para este método

    Feito isso vamos criar o outro método q retornara um label

    public Label mostraUf(Label lbl, string busca)

    {

    SqlConnection cnx = new SqlConnection();

    cnx.ConnectionString = "Data source = caminho do banco;; initial catalog = nome do banco; integrated security = true";

    string cmd = "SELECT nomeUF FROM ufCIDADE inner join tblUF on tblUF.idU = ufCIDADE.idU where ufCIDADE.idC = (select tblCidade.idC from tblCidade where tblCidade.nome = '"+ busca+"')";

    SqlCommand comando = new SqlCommand(cmd, cnx);

    cnx.Open();

    SqlDataReader dr = comando.ExecuteNonReader();

    while(dr.Read())

    {

    lbl.Text = ((string)dr["nomeUF"]);

    }

    cbx.Close();

    return lbl;

    }

    este método voce adicione dentro do evento  private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

    da seguinte maneira

     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

    {

    SuaClasse obj = new SuaClasse();

    obj.mostraUF(label1, comboBox1.SelectedItem.ToString());

    }

    faça isto e me diga qual foi seu resultado

    Att Edney qlqr coisa só me procurar pelo forum

    sábado, 5 de junho de 2010 02:54
  • conseguiu resolver seu problema?

    se nao gravo um video fazendo isso para você.


    Contato:albertim_brasil@hotmail.com - Se ajudei, marca como útil.
    Twitter: Me siga!!
    Blog:http://dotnettime.spaces.live.com/

    sábado, 5 de junho de 2010 14:34
  • resolvido ja essa solucao, pelo menos pra mim!
    segunda-feira, 7 de junho de 2010 19:03
  • Boas, estou com um problema, estou usando o sql server, e estou a fazer uma aplicação movel com o VS 2008 na linguagem C#

    -Tenho uma base de dados criada no sql server com o nome "teste2" com a tabela "utilizador"

    -estou a aceder localmente, a conexao à base de dados é bem efectuada, mas não consigo fazer o select na base de dados para me apresentar os nomes todos da tabela. Desde já agradeço qualquer resposta...

    segue-se  o codigo:

    using System;
    using System.Linq;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;

     
    namespace SmartDeviceProject25
    {
       
        public partial class dgform : Form
        {

            string Connection;
            SqlConnection comm;
           
            public dgform()
            {
                InitializeComponent();
            }
         
            private void Abre_ligacao(String ip,String porta,String nomeBd, String username, String password)
            {
                Connection = "Data Source=" + ip + "," + porta + ";Initial Catalog=" + nomeBd + ";User ID=" + username + ";Password=" + password + ";";
                comm = new SqlConnection(Connection);
                try
                {
                    comm.Open();
                }
                catch
                {
                    MessageBox.Show("Erro na ligação");
                }
            }
            private void TestaSelect(string Connection)
            {
                string query = "SELECT nome FROM utilizador";
                SqlDataReader dr = null;
            try
            {
                SqlCommand cmd = comm.CreateCommand();
                cmd.CommandText = query;
                cmd.ExecuteNonQuery();
                dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    String nome = dr["nome"].ToString();
                    MessageBox.Show(nome);
                }
            }
            catch
            {
                MessageBox.Show("Erro no select");
            }
           
            }

            private void button1_Click(object sender, EventArgs e)
            {
                Abre_ligacao("192.168.10.3", "1433", "teste2", "sa", "jerbas");
                TestaSelect(Connection);
                comm.Close();
            }

          

        }
    }

    segunda-feira, 14 de junho de 2010 23:06
  • bom senhor ricardo tenta fazer da seguinte maneira

    SqlConnection con = new SqlConnection();
    
    public void testaSelect()
    {
       /*como tua conexão é local não precisa de ip,
       geralmente a padrão é o nome da máquina mais -pc
       supondo que tua máquina se chame Ricardo a string de
       conexão vai ficar assim "Ricardo-PC" isso por padrão 
       mas lembrando que na instalação ela pode ter sido 
       modificada então veja ela nas propriedades da tua tabela no
       banco de dados em Nome do Servidor/Server Name lá terá
       exatamente o q vc tem q usar depois do data source*/
       con.ConnectionString = "Data Source= SUACONEXÃO;; Initial Catalog = teste2; Integrated Security=true";
       string comando = "SELECT nome FROM utilizador";
       SqlCommand cmd = new SqlCommand(comando, con);
       SqlDataReader dr = cmd.ExecuteReader();
       while(dr.Read())
       {
          string nome = (string)dr["nome"];
          MessageBox.Show(nome.ToString());
       }
    
    }

    teste isto e nos diga o resultado blz

    Att Edney;

    qualquer coisa estamos pelo fórum

    sábado, 19 de junho de 2010 03:36