none
Ajuda - Select SQL + C# RRS feed

  • Pergunta

  • Olá a todos!

    Estou migrando para o C# e estou com uma dúvida básica com a instrução Select.

    No VB para retornar valores de um banco SQL e exibí-los em TextBox eu utilizava o seguinte comando:

     

            Dim cst As String
            cst = "Data Source=W1C1;Initial Catalog=ContRec;User ID=edu;Password=grtofjv"
          
            Dim conec As New SqlConnection()
            conec.ConnectionString = cst
            conec.Open()
            Dim Selcom, com As New SqlCommand
            Selcom.Connection = conec
            Selcom.CommandText = "SELECT * FROM Clientes WHERE cnpj_cli = '" + ComboBox_pes_cnpj.Text + "'"
            Dim reader As SqlDataReader
               reader = Selcom.ExecuteReader()
              Do While reader.Read
              
              TextBox_raz_social_cli.Text = reader("razao_cli").ToString
               
            Loop

     

            Como executar o comando em C#?

            Creio que o problema está no SqlDataReader.

            Alguma dica?

     

    Desde já agradeço!

     

     

    quarta-feira, 6 de abril de 2011 21:29

Respostas

  • Em csharp usa-se brackets  e :

    TextBox_raz_social_cli.Text = reader["razao_cli"].ToString();
    e no finsal da ToString(); e nao ToString apenas.

    podes fazer tambem assim:
    TextBox_raz_social_cli.Text = (String)reader["razao_cli"].ToString();


    Just Be Humble Malange!
    • Marcado como Resposta Eduardo da Gama sexta-feira, 8 de abril de 2011 11:03
    quarta-feira, 6 de abril de 2011 22:12
    Moderador
  •  String cst = @"Data Source=W1C1;Initial Catalog=ContRec;User ID=edu;Password=grtofjv";

     SqlConnection conec = New SqlConnection(cst);

     conec.Open();
      SqlCommand 
    Selcom = New SqlCommand("SELECT * FROM Clientes WHERE cnpj_cli =@Numero_Cliente";

      Selcom.parameter.AddWithValue("@Numero_Cliente", ComboBox_pes_cnpj.Text);

    Try

    {

      SqlDataReader reader = Selcom.ExecuteReader()

               While (reader.Read())

                {
               
              TextBox_raz_social_cli.Text = (String)reader["razao_cli"].ToString();

                }

              reader.Close();

       }

    Catch (Exception e)

    {

    essageBox.Show(e.ToString());
    }
    conec.Close();





    Just Be Humble Malange!
    • Marcado como Resposta Eduardo da Gama sexta-feira, 8 de abril de 2011 11:03
    quarta-feira, 6 de abril de 2011 23:05
    Moderador
  • ui voce precisa fazer referencia da conection(conecao...:

    SqlCommand Selcom = new SqlCommand("SELECT * FROM acesso WHERE matricula =@matricula_func", conec);

    faltava no final o nome da conecao que liga a base de dados: conec.

    agora esta perfeito.



    Just Be Humble Malange!
    • Marcado como Resposta Eduardo da Gama sexta-feira, 8 de abril de 2011 11:03
    quinta-feira, 7 de abril de 2011 16:28
    Moderador
  • Muito obrigado, Malange, tu é o cara!!

     

    Para quem precisar o código completo está aqui:

     

    {
                //Conexão com Banco
                SqlConnection conec = new SqlConnection("Data Source=SEU SERVIDOR;Initial Catalog=SEU BANCO;User ID=SUA ID;Password=SUA SENHA");

                // Abre cobexão           

                conec.Open();

                //Efetua o select no banco
                SqlCommand Selcom = new SqlCommand("SELECT * FROM Caixa WHERE obs_cai =@obs_cai", conec);

                 //Efetua a passagem de parâmetro
                Selcom.Parameters.AddWithValue("@obs_cai", txt_matricula.Text);

                try
                {

                    SqlDataReader reader = Selcom.ExecuteReader();

                    while (reader.Read())
                    {

                        //Insere o parâmetro no TextBox
                        txt_acesso.Text = (String)reader["evento_cai"].ToString();

                    }


                    reader.Close();

                }
    catch (Exception ex)

    {

    MessageBox.Show(ex.ToString());


    }

    conec.Close();

                }

    • Marcado como Resposta Eduardo da Gama sexta-feira, 8 de abril de 2011 11:03
    sexta-feira, 8 de abril de 2011 11:02

Todas as Respostas

  • Existe paginas que fazem conversoes de codigo, de vb.net pra Csharp. Podes usar:

    http://www.developerfusion.com/tools/convert/csharp-to-vb/

     

    Agora no c# nao existe Dim. 

    Dim palavra As String

    Em c# ficaraia Assim:  string palavra;

    o comando vem primeiro, sempre o comando vem primeiro:

     

    Eu convert o seu codigo, fica assim:

     

    private void Agora()
    {
    	string cst = null;
    	cst = "Data Source=W1C1;Initial Catalog=ContRec;User ID=edu;Password=grtofjv";
    
    	SqlConnection conec = new SqlConnection();
    	conec.ConnectionString = cst;
    	conec.Open();
    	dynamic Selcom = default(SqlCommand);
    	SqlCommand com = new SqlCommand();
    	Selcom.Connection = conec;
    	Selcom.CommandText = "SELECT * FROM Clientes WHERE cnpj_cli = '" + ComboBox_pes_cnpj.Text + "'";
    	SqlDataReader reader = default(SqlDataReader);
    	reader = Selcom.ExecuteReader();
    	while (reader.Read) {
    
    		TextBox_raz_social_cli.Text = reader("razao_cli").ToString;
    
    	}
    
    
    }

    Pega este agora e chama no evento load do seu form

     


    Just Be Humble Malange!
    quarta-feira, 6 de abril de 2011 21:50
    Moderador
  • Obrigado pela atenção Malange.

    Tentei converter o código, porém não funcionou.

    O erro está em:

     

    TextBox_raz_social_cli.Text = reader("razao_cli").ToString;


    Há outro método para retornar o valor do banco e exibir em um TextBox?


    Obrigado pela atenção!

    quarta-feira, 6 de abril de 2011 22:07
  • Em csharp usa-se brackets  e :

    TextBox_raz_social_cli.Text = reader["razao_cli"].ToString();
    e no finsal da ToString(); e nao ToString apenas.

    podes fazer tambem assim:
    TextBox_raz_social_cli.Text = (String)reader["razao_cli"].ToString();


    Just Be Humble Malange!
    • Marcado como Resposta Eduardo da Gama sexta-feira, 8 de abril de 2011 11:03
    quarta-feira, 6 de abril de 2011 22:12
    Moderador
  • Valeu Malange!

    Porém agora eu tenho outro erro:

    Selcom.Connection = conec;

    (Cannot perform runtime binding on a null reference)

     

    Se puder me ajudar agradeço!

     

     

     

     

     

    quarta-feira, 6 de abril de 2011 22:29
  •  String cst = @"Data Source=W1C1;Initial Catalog=ContRec;User ID=edu;Password=grtofjv";

     SqlConnection conec = New SqlConnection(cst);

     conec.Open();
      SqlCommand 
    Selcom = New SqlCommand("SELECT * FROM Clientes WHERE cnpj_cli =@Numero_Cliente";

      Selcom.parameter.AddWithValue("@Numero_Cliente", ComboBox_pes_cnpj.Text);

    Try

    {

      SqlDataReader reader = Selcom.ExecuteReader()

               While (reader.Read())

                {
               
              TextBox_raz_social_cli.Text = (String)reader["razao_cli"].ToString();

                }

              reader.Close();

       }

    Catch (Exception e)

    {

    essageBox.Show(e.ToString());
    }
    conec.Close();





    Just Be Humble Malange!
    • Marcado como Resposta Eduardo da Gama sexta-feira, 8 de abril de 2011 11:03
    quarta-feira, 6 de abril de 2011 23:05
    Moderador
  • Alguém poderia indicar um tutorial de como retornar dados de SQL em TextBox?

     

    Obrigado!

    http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.aspx

    http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader(v=vs.71).aspx

     

    private void button5_Click(object sender, EventArgs e)

            {

                SqlConnection CNN = new SqlConnection(CSharp_Teste.Properties.Settings.Default.CNNSetting);

                SqlCommand myCommand = new SqlCommand("Select * From Table_Inf", CNN);

                CNN.Open();

     

                SqlDataReader  myDataReader= myCommand.ExecuteReader();

               if (myDataReader.HasRows)

                {

     

                    while (myDataReader.Read())

                    {

                        textbox1.text = myDataReader.GetValue(0).ToString();

                        textbox2.text = myDataReader.GetValue(1).ToString();

                        textbox3.text = myDataReader.GetValue(2).ToString();

     

                    }

                }

     

                else

                {

                   MessageBox.Show("Nao existe informacao no datareader");

                }

            }


    Just Be Humble Malange!
    • Sugerido como Resposta Eduardo Cury quinta-feira, 7 de abril de 2011 01:26
    quarta-feira, 6 de abril de 2011 23:13
    Moderador
  • Valeu Malange, sempre você...

    O reader está vindo null!!

    Depois o message diz: System.Windows.Forms.MouseEventArgs

     

    Fiz algumas alterações e ficou assim:

     

                SqlConnection conec = new SqlConnection("Data Source=W1C1;Initial Catalog=GCEC;User ID=edu;Password=grtofjv");

                     conec.Open();

                     SqlCommand Selcom = new SqlCommand("SELECT * FROM acesso WHERE matricula =@matricula_func");

                     Selcom.Parameters.AddWithValue("@matricula_func", txt_matricula.Text);

                try
                       {

                    SqlDataReader reader = Selcom.ExecuteReader();

                     while (reader.Read())


                      {

                        txt_acesso.Text = (String)reader["acesso"].ToString();

                      }

                       reader.Close();

                      }

                      catch (Exception)

                     {

                  MessageBox.Show(e.ToString());


                      }

                      conec.Close();

     

    Se não for você tô ferrado!!


     

     

     

     

     

    quinta-feira, 7 de abril de 2011 00:05
  • Opa, blza Eduardo?

     

    dá uma olhada no catch (Exception) aqui vc deve declarar uma variável para pegar a exception mesmo dai ficaria assim:

    catch (Exception e)

                     {
                  MessageBox.Show(e.Message);
                      }

    Claro q isso nao resolve o problema, mas acho que assim vc verá o motivo real do problema...

    o erro pode estar na conexão ou no seu sql, dá uma olhada se o parâmetro @matricula_func não deve ser numérico, pois vc está passando uma string


    quinta-feira, 7 de abril de 2011 00:55
  • Valeu a dica Diego.

     

    Acredito que o erro está na passagem do parâmetro:

      SqlCommand Selcom = new SqlCommand("SELECT * FROM acesso WHERE matricula =@matricula_func");

     

    Deveria ser:

      SqlCommand Selcom = new SqlCommand("SELECT * FROM acesso WHERE matricula ='@matricula_func'");

    Com aspas simples! Vou testar e passo o resultado!

     

    Desde já agradeço pela ajuda Malange!!


    quinta-feira, 7 de abril de 2011 13:49
  • ui voce precisa fazer referencia da conection(conecao...:

    SqlCommand Selcom = new SqlCommand("SELECT * FROM acesso WHERE matricula =@matricula_func", conec);

    faltava no final o nome da conecao que liga a base de dados: conec.

    agora esta perfeito.



    Just Be Humble Malange!
    • Marcado como Resposta Eduardo da Gama sexta-feira, 8 de abril de 2011 11:03
    quinta-feira, 7 de abril de 2011 16:28
    Moderador
  • Muito obrigado, Malange, tu é o cara!!

     

    Para quem precisar o código completo está aqui:

     

    {
                //Conexão com Banco
                SqlConnection conec = new SqlConnection("Data Source=SEU SERVIDOR;Initial Catalog=SEU BANCO;User ID=SUA ID;Password=SUA SENHA");

                // Abre cobexão           

                conec.Open();

                //Efetua o select no banco
                SqlCommand Selcom = new SqlCommand("SELECT * FROM Caixa WHERE obs_cai =@obs_cai", conec);

                 //Efetua a passagem de parâmetro
                Selcom.Parameters.AddWithValue("@obs_cai", txt_matricula.Text);

                try
                {

                    SqlDataReader reader = Selcom.ExecuteReader();

                    while (reader.Read())
                    {

                        //Insere o parâmetro no TextBox
                        txt_acesso.Text = (String)reader["evento_cai"].ToString();

                    }


                    reader.Close();

                }
    catch (Exception ex)

    {

    MessageBox.Show(ex.ToString());


    }

    conec.Close();

                }

    • Marcado como Resposta Eduardo da Gama sexta-feira, 8 de abril de 2011 11:03
    sexta-feira, 8 de abril de 2011 11:02