VERIFICAR SE A VARAVEL É NULA

 Tópico anterior Próximo tópico Novo tópico

VERIFICAR SE A VARAVEL É NULA

C#

 Compartilhe  Compartilhe  Compartilhe
#496796 - 22/04/2021 10:20:01

ELMO01
BELO HORIZONTE
Cadast. em:Agosto/2004


Oi pessoal,

Estou tentando aprendendo o C# e estou cheio de dúvidas. Uma dúvida é como faço para utilizar uma variável que está na estrutura do banco de dados MYSQL com o ListView sendo que esta variável é NULA?

Obrigado,


elmo

#496797 - 22/04/2021 11:34:47

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe

Última edição em 22/04/2021 11:35:34 por KERPLUNK

Está nula no banco? Se sim, você precisa usar o DBNull.

if (BLA == DBNull.Value)
{
    //blla bla
}



_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


Resposta escolhida #496799 - 22/04/2021 13:06:27

TUNUSAT
SAMPA
Cadast. em:Dezembro/2003


Elmo,

    Por favor, leia os artigos:

------------------------------------------
C# - Os tipos Nullable (Tipos Anuláveis)

   Existem situações, especialmente quando se trabalha com bases de dados, onde você quer indicar que uma variável não detém atualmente um valor válido. Para tipos de referência, você pode fazer isso com facilidade definindo a variável para null.

   Mas temos um problema : Quando você define uma variável de um tipo de valor ela é alocada na memória mesmo que o seu conteúdo não tiver um valor válido.

http://www.macoratti.net/11/03/c_ntp.htm
------------------------------------------
Tipos de referência anuláveis
21/04/2020
9 minutos para o fim da leitura

https://docs.microsoft.com/pt-br/dotnet/csharp/nullable-references
------------------------------------------
Tipos de referência anuláveis (referência C#)
06/04/2020
4 minutos para o fim da leitura

https://docs.microsoft.com/pt-br/dotnet/csharp/language-reference/builtin-types/nullable-reference-types
------------------------------------------
Tutorial: Expressar sua intenção de design mais claramente com tipos de referência que permitem valor nulo e tipos que não permitem valor nulo
19/02/2019
9 minutos para o fim da leitura

https://docs.microsoft.com/pt-br/dotnet/csharp/whats-new/tutorials/nullable-reference-types
------------------------------------------
Atributos reservados contribuem para a análise estática do estado nulo do compilador
09/04/2021
14 minutos para o fim da leitura

https://docs.microsoft.com/pt-br/dotnet/csharp/language-reference/attributes/nullable-analysis
------------------------------------------

[]'s,
Tunusat.

Haja, pois, o que houver, ampliem-se obstáculos, agigantem-se problemas, intensifiquem-se lutas ou se agravem provações, trabalha sempre no bem de todos, porque, trabalhando na Seara do Bem, podes conservar a certeza de que Deus te sustentará. Emmanue

#496801 - 22/04/2021 17:13:11

ELMO01
BELO HORIZONTE
Cadast. em:Agosto/2004


Última edição em 22/04/2021 17:14:25 por ELMO01

Pessoal, abaixo está o código que estou escrevendo, por favor dá uma olhada e me fala o que estou fazendo de errado

        public void Criar_Lista()
        {
            ListView1.Items.Clear();
            ListView1.View = View.Details;
            ListView1.FullRowSelect = true;

            ListViewItem NewListas = new ListViewItem();
            MySqlDataReader dr_Empresa;
            MySqlConnection Con_Empresa = new MySqlConnection(VarGlobais.StrConfi);   // VarGlobais.StrConfi = server=LocalHost;user=root;password=elmo2901;port=3306;database=tb_sistema
            MySqlCommand Cmd_Empresa = new MySqlCommand(VarGlobais.StrCliente, Con_Empresa);              //                Con_Empresa = SELECT * FROM tb_cliente WHERE Tipo_Cli = 'A'
            Con_Empresa.Open();
            dr_Empresa = Cmd_Empresa.ExecuteReader();

            try
            {
                if (dr_Empresa.HasRows)
                {
                    while (dr_Empresa.Read())
                    {
                        NewListas = ListView1.Items.Add(dr_Empresa.GetString(0).PadLeft(6,'0'));  // ID
                        NewListas.SubItems.Add(dr_Empresa.GetString(2)).ToString();               // Nome da Empresa

                        if (dr_Empresa.GetString(5).ToString() == string.Empty)                           // Razão Social / Nome do Cliente
                        {
                            NewListas.SubItems.Add(dr_Empresa.GetString(4).ToString());          // Numero do Endereço
                        }
                        else
                        {
                            NewListas.SubItems.Add(dr_Empresa.GetString(4).ToString() + ' , ' + dr_Empresa.GetString(5).ToString());  // Endereço + Numero
                        }
                     }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                Con_Empresa.Close();
            }
        }

Obs: Quando o sistema acha uma variável na estrutura que está nula se dá o erro.

Obrigado



elmo

#496802 - 22/04/2021 19:08:27

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe

Última edição em 22/04/2021 20:12:59 por KERPLUNK

O erro ocorre na linha de comparação(if (dr_empresa....)
Você está usando o método 'ToString', antes de verificar se ele é nulo.
Sugiro dar uma olhada nos vídeos no meu canal, lá eu mostro como fazer dessa forma bem artesanal como você está querendo.


_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#496803 - 22/04/2021 20:13:46

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Mas sinceramente, sugiro usar um ORM. Muito menos trabalho e muito mais benefícios se comparado à esse modo artesanal

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#496896 - 06/05/2021 11:32:33

ELMO01
BELO HORIZONTE
Cadast. em:Agosto/2004


Última edição em 06/05/2021 11:40:00 por ELMO01

Pessoal continuo com dificuldades na variável nula que vem do banco de dados MYSQL, fiz desta forma e não está funcionando:

string NewNumero = dr_Empresa.GetString(4) == null || dr_Empresa.GetString(4) != null ? dr_Empresa.GetString(4) : ';';

Quando chega nesta linha dá o seguinte erro:  DADOS SÃO NULL. Não é possível chamar este método ou esta propriedade em valores NULL.

Alguém pode ver o que estou fazendo de errado?

Obrigado


elmo

#496906 - 07/05/2021 09:47:55

OCELOT
SOROCABA
Cadast. em:Março/2012


Se o dado pode ser nulo você não pode usar o GetString do datareader sem verificar primeiro se ele é nulo, o DataReader tem um método IsDBNull para verificar se é nulo, algo do tipo
string valor = dataReader.IsDBNull(4) ? 'valor nulo' : dataReader.GetString(4);




#496909 - 07/05/2021 17:52:00

ELMO01
BELO HORIZONTE
Cadast. em:Agosto/2004


Agradeço a todos

elmo

 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por ELMO01 em 07/05/2021 17:52:09