none
Como fazer uma consulta Simples no banco. RRS feed

  • Pergunta

  • Estou tentando fazer uma consulta bem simples no banco e não consigo de maneira alguma.

    O que preciso fazer é o seguinte.

    Tenho por exemplo, na tabela do banco de dados código, nome, telefone.

    O que eu preciso fazer é conseguir consultar com o código, consultar o nome do registro, e não consigo.

    O que fiz até agora foi:

    private void btnAlterarCliente_Click(object sender, EventArgs e)
            {
                string teste;
                conectBanco();
                try
                {
                    conexao.Open();
                    string fashionclientedbConsultaNome = "SELECT cod_Cliente, nome_Cliente * FROM fashionclientedb WHERE cod_Cliente = " + _Valor ;
                    MySqlDataAdapter conexaoAdapter = new MySqlDataAdapter(fashionclientedbConsultaNome, conexao);
                    conexaoAdapter.Fill(conexaoDataSet, "fashionclientedb");
                   edtNomeCliente.Text = ""; //Não tenho a menor ideia de como fazer.

                    conexao.Close();
                    conexao.Dispose();
                }
                catch
                {
                    MessageBox.Show("Erro ao conectar com o banco!");
                    conexao.Close();
                    conexao.Dispose();
                }

    Agradeço muito se alguém me ajudar.

    quinta-feira, 10 de setembro de 2015 03:45

Respostas

  • Segue um exemplo que encontrei na net.

    http://www.macoratti.net/09/05/c_adn_4.htm

    using System.Data;
    using System.Data.SqlClient;
    
    string connString = "Data Source=server;Initial Catalog=database;Persist Security Info=True;User ID=sa;Password=xxx"
    SqlConnection adoConn = new SqlConnection(connString);
    adoConn.Open();
    
    // novo command
    string sql = "SELECT * FROM Tabela";
    SqlCommand adoCmd = new SqlCommand(sql, adoConn);
    
    SqlDataReader adoDR = adoCmd.ExecuteReader();
    
    if (adoDR.HasRows)
    {
         while (adoDR.Read())
         {
             Response.Write(adoDR["0"].ToString());
         }
    }
    
    adoDR.Close();
    adoDR.Dispose();
    adoCmd.Dispose();
    adoConn.Close();
    adoConn.Dispose();

    quinta-feira, 10 de setembro de 2015 13:50
  • Primeiro sobre a Query: o "SELECT cod_Cliente, nome_Cliente * FROM fashionclientedb WHERE cod_Cliente = " + _Valor ;" - "fashionclientedb" é o nome do banco? Se for a consulta correta seria "nome do banco" ponto "nome da tabela" então seria "fashionclientedb.clientes" por exemplo.

    Segundo, eu prefiro usar Adapter para consulta de tabelas para alimentar grids etc, para ler 1 linha da tabela eu faço a consulta com Reader ao invés de Adapter. Usando Reader você só tem que lembrar de dar Close() para não deixar-lo aberto ao final da consulta.

    Minhas funções de consulta são:

                public global::System.Data.DataTable ExecuteQueryOnAdapter(string Query, global::System.Data.MySql.MySqlConnection Conn)
                {
                    if (Conn == null) { return null; }
                    else
                    {
                        DataAdapter adapter = new DataAdapter(Query, Conn);
                        Sys.Data.DataTable datas = new Sys.Data.DataTable();
                        try { adapter.Fill(datas); }
                        catch { datas = null; }
                        adapter.Dispose();
                        return datas;
                    }
                }
    
                public global::System.Data.MySql.MySqlDataReader Read(string Query, global::System.Data.MySql.MySqlConnection Conn)
                {
                    global::System.Data.MySql.MySqlCommand command = Conn.CreateCommand();
                    command.CommandText = Query;
                    try
                    {
                        global::System.Data.MySql.MySqlDataReader Reader = command.ExecuteReader();
                        if (Reader != null)
                        {
                            if (!Reader.Read())
                            {
                                Reader.Close();
                                Reader = null;
                            }
                        }
                        return Reader;
                    } catch { return null; }
                }

    Se você usar a chamada do Reader basta associar:

    global::System.Data.MySql.MySqlDataReader Reader = Read("SELECT * FROM fashionclientedb.clientes WHERE cod_Cliente = " + _Valor, conexao);
    edtNomeCliente.Text = Reader.GetString("nome_Cliente");
    Reader.Close(); //ISSO É MUITO IMPORTANTE!!!

    Se você usar o DataAdapter:

    global::System.Data.DataTable Reader = ExecuteQueryOnAdapter("SELECT * FROM fashionclientedb.clientes WHERE cod_Cliente = " + _Valor, conexao);
    edtNomeCliente.Text = global::System.Convert.ToString((Reader.Rows[0])["nome_Cliente"]);

    Pode ter algum erro de digitação nesses códigos porque escrevi meio que de cabeça, mas é isso.


    quinta-feira, 10 de setembro de 2015 15:16

Todas as Respostas

  • Tente o seguinte e veja se funciona.

    conexaoDataSet.Tables(0).Rows(0)("nome_Cliente")

    Se a resposta foi útil, favor não esquecer de votar.



    quinta-feira, 10 de setembro de 2015 13:05
  • Segue um exemplo que encontrei na net.

    http://www.macoratti.net/09/05/c_adn_4.htm

    using System.Data;
    using System.Data.SqlClient;
    
    string connString = "Data Source=server;Initial Catalog=database;Persist Security Info=True;User ID=sa;Password=xxx"
    SqlConnection adoConn = new SqlConnection(connString);
    adoConn.Open();
    
    // novo command
    string sql = "SELECT * FROM Tabela";
    SqlCommand adoCmd = new SqlCommand(sql, adoConn);
    
    SqlDataReader adoDR = adoCmd.ExecuteReader();
    
    if (adoDR.HasRows)
    {
         while (adoDR.Read())
         {
             Response.Write(adoDR["0"].ToString());
         }
    }
    
    adoDR.Close();
    adoDR.Dispose();
    adoCmd.Dispose();
    adoConn.Close();
    adoConn.Dispose();

    quinta-feira, 10 de setembro de 2015 13:50
  • Primeiro sobre a Query: o "SELECT cod_Cliente, nome_Cliente * FROM fashionclientedb WHERE cod_Cliente = " + _Valor ;" - "fashionclientedb" é o nome do banco? Se for a consulta correta seria "nome do banco" ponto "nome da tabela" então seria "fashionclientedb.clientes" por exemplo.

    Segundo, eu prefiro usar Adapter para consulta de tabelas para alimentar grids etc, para ler 1 linha da tabela eu faço a consulta com Reader ao invés de Adapter. Usando Reader você só tem que lembrar de dar Close() para não deixar-lo aberto ao final da consulta.

    Minhas funções de consulta são:

                public global::System.Data.DataTable ExecuteQueryOnAdapter(string Query, global::System.Data.MySql.MySqlConnection Conn)
                {
                    if (Conn == null) { return null; }
                    else
                    {
                        DataAdapter adapter = new DataAdapter(Query, Conn);
                        Sys.Data.DataTable datas = new Sys.Data.DataTable();
                        try { adapter.Fill(datas); }
                        catch { datas = null; }
                        adapter.Dispose();
                        return datas;
                    }
                }
    
                public global::System.Data.MySql.MySqlDataReader Read(string Query, global::System.Data.MySql.MySqlConnection Conn)
                {
                    global::System.Data.MySql.MySqlCommand command = Conn.CreateCommand();
                    command.CommandText = Query;
                    try
                    {
                        global::System.Data.MySql.MySqlDataReader Reader = command.ExecuteReader();
                        if (Reader != null)
                        {
                            if (!Reader.Read())
                            {
                                Reader.Close();
                                Reader = null;
                            }
                        }
                        return Reader;
                    } catch { return null; }
                }

    Se você usar a chamada do Reader basta associar:

    global::System.Data.MySql.MySqlDataReader Reader = Read("SELECT * FROM fashionclientedb.clientes WHERE cod_Cliente = " + _Valor, conexao);
    edtNomeCliente.Text = Reader.GetString("nome_Cliente");
    Reader.Close(); //ISSO É MUITO IMPORTANTE!!!

    Se você usar o DataAdapter:

    global::System.Data.DataTable Reader = ExecuteQueryOnAdapter("SELECT * FROM fashionclientedb.clientes WHERE cod_Cliente = " + _Valor, conexao);
    edtNomeCliente.Text = global::System.Convert.ToString((Reader.Rows[0])["nome_Cliente"]);

    Pode ter algum erro de digitação nesses códigos porque escrevi meio que de cabeça, mas é isso.


    quinta-feira, 10 de setembro de 2015 15:16