none
Como verificar se o Data Read está nulo? RRS feed

  • Pergunta

  • Queria pesquisar uma data e retorna no Read, e verificar se já existe um cadastro com essa data, lendo o read tipo o codigo abaixo! Só que no codigo está dando um erro!

     string Dta = DateTime.Now.ToString("yyyy-MM-dd");
                int NumCaixa = 1;
    
                string Retorno = null;
                string Dia = null;
                try
                {
                    ConectarBanco.Open();
                    string ConsultaCaixa = "SELECT caixa_cod, dataabertura, caixanumero FROM caixa_abertura WHERE caixanumero ="+NumCaixa+ " AND dataabertura = "+Dta+"";
                    MySqlCommand cmd = new MySqlCommand(ConsultaCaixa, ConectarBanco);
                    MySqlDataReader dr;            
                    dr = cmd.ExecuteReader();
                    dr.Read();
                    if (dr.HasRows == false)
                    {
                        Retorno = dr.GetString(0);
                        Dia = dr.GetString(1);
                        MessageBox.Show("O Caixa do dia " + Dia + "Já foi aberto!");
                    }
                    else
                    {
    
                    }
    
                    
                    ConectarBanco.Close();

    quarta-feira, 13 de fevereiro de 2019 21:17

Todas as Respostas

  • Olá A.Junior.Cta,

    Tente o seguinte:

    não use este código: dr.Read(); portanto usa ele dentro dum while como assim:

    while (dr.Read())
    {
       if (dr.HasRows)
       {
          //Seu código;
       }
       else
           MessageBox.Show("Dados não encontrados!");
    }

    Espero que te ajudou.
    dr.Dispose();

    quinta-feira, 14 de fevereiro de 2019 11:03
  • Não deu certo, removi while retornou MessageBox.Show("Dados não encontrados!");

    porém eu sei que deveria retorna uma pois no banco deixei o campo pronto, mais sempre retorna dados não encontrado!

    quando faço direto no banco retorna 1

    SELECT 
    caixa_cod, 
    dataabertura, 
    caixanumero 
    FROM 
    caixa_abertura 
    WHERE caixanumero = 1 
    AND dataabertura = "2019-02-15"

    pois já deixei uma linha com esses dados na tabela mais quando roda no sistema retorna dados não encontrados, seria o codigo dentro do c# que está errado?

            private void VerificarCaixaAberto()
            {
                string Dta = DateTime.Now.ToString("yyyy-MM-dd");
                int cx = 1;           
                string Retorno = null;
                string Dia = null;
              
                    ConectarBanco.Open();
                    string ConsultaCaixa = "SELECT caixa_cod, dataabertura, caixanumero FROM caixa_abertura WHERE caixanumero ="+cx+ " AND dataabertura = "+Dta+"";
                    MySqlCommand cmd = new MySqlCommand(ConsultaCaixa, ConectarBanco);
                    MySqlDataReader dr;            
                    dr = cmd.ExecuteReader();
                    dr.Read();                       
                
                    if (dr.HasRows)
                    {
                        Retorno = dr.GetString(0);
                        Dia = dr.GetString(1);
                        MessageBox.Show("O Caixa do dia " + Dia + "Já foi aberto!");
                    }
                    else
                    {
                        MessageBox.Show("Dados não encontrados!");
                    }
    
                    ConectarBanco.Close();
               
           }

    sexta-feira, 15 de fevereiro de 2019 10:52