CONVERTER NULL EM STRING TOSTRING

MICHAELL 10/07/2016 00:30:33
#464674
Olá Galera..

Tenho vários campos que podem ser nulos no banco de dados..
e sempre para inserir esses campos nos textbox, tenho primeiro que verificar com IF se o campo é null ou nao para depois passar o toString()

txtEndereco.Text = String.IsNullOrEmpty(cliente.Endereco) ? [Ô][Ô] : cliente.Endereco.ToString();

para gravar no banco seria a mesma coisa.

cliente.Endereco = String.IsNullOrEmpty(txtEndereco.Text) ? [Ô][Ô] : txtEndereco.Text;

não há algum método que já faça isso, tipo um toStringOrNull() ?!
caso não tenha, seria ideal um metodo de extensao para fazer isso ou melhor seria verificar dessa forma?

valew abraço
KERPLUNK 10/07/2016 01:03:47
#464675
Resposta escolhida
Isso sim é uma boa idéia criar um método de extensão...
JABA 10/07/2016 01:12:28
#464676
Citação:

cliente.Endereco = String.IsNullOrEmpty(txtEndereco.Text) ? [Ô][Ô] : txtEndereco.Text;



Você acabou criando o tópico no lugar errado. Mas respondendo a sua pergunta: Por que é necessário verificar se ele está vazio? Por que você não passa o valor diretamente?

cliente.Endereco = txtEndereco.Text;


txtEndereco.Text = cliente.Endereco;


OBS: Em C#, para receber null, você pode declarar o atributo com uma interrogação no final, assim:

private string? campo = [Ô][Ô]


Em Vb.net seria assim:

Dim campo As Nullable(Of String)
MICHAELL 10/07/2016 02:12:30
#464677
Acabei escolhendo por engano o vb.. mas é c# mesmo que utilizo.

A respeito do seu exemplo: txtEndereco.Text = cliente.Endereco; acabei dando um exemplo errado...
seria para caso o campo seja inteiro.. e tenho que converter para string. Exemplo: txtNumero.Text = cliente.Numero.ToString();

para gravar no banco mesma coisa, caso o campo possa ser nulo, seria interessante fazer essa verificacao:
cliente.Endereco = String.IsNullOrEmpty(txtEndereco.Text) ? null : txtEndereco.Text;

pois dessa forma se o TextBox não for preenchido, grava Null no banco

O mesmo acontece com Inteiro
por exemplo, numero do endereço eu utilizo do tipo int
Caso o numero não seja preenchido nao quero gravar 0 no banco, pois da próxima vez vai carregar 0 no formulário e acabar ocupando de certa forma, um espaço desnecessário.

O mesmo serve para o tipo Date...em data de aniversário quando é opcional, ou até mesmo do tipo Double;

Então por isso cogitei a ideia de criar metodo de extensao


JABA 10/07/2016 02:47:45
#464680
Entendi. Como você vai querer usar isso em qualquer objeto, acho que seria melhor criar isso em uma classe estática e torná-la pública para todo o projeto, assim você evita repetição de código. E não esqueça que se você quiser passar valores nulos para int, double, decimal, date, etc, é só declarar o atributo com a interrogação no final, conforme coloquei na minha primeira postagem.

Ex:
private int? SeuCampo = null;

MICHAELL 10/07/2016 03:29:21
#464681
Citação:

:
Entendi. Como você vai querer usar isso em qualquer objeto, acho que seria melhor criar isso em uma classe estática e torná-la pública para todo o projeto, assim você evita repetição de código. E não esqueça que se você quiser passar valores nulos para int, double, decimal, date, etc, é só declarar o atributo com a interrogação no final, conforme coloquei na minha primeira postagem.

Ex:

private int? SeuCampo = null;



sim to ligado nisso..
mas a ideia seria criar um Metodo de Extensao.. que nada mais é que um metodo estatico que extense qualquer string.

criei um metodo de extensao assim:
   public static string ToStringOrNull(this string text)
{
return string.IsNullOrEmpty(text) ? null : text;
}



e entao utilizo assim por exemplo:
cliente.Endereco = txtEndereco.Text.ToStringOrNull();
JCM0867 10/07/2016 09:50:28
#464683
Eu faço assim no VB.NET:

[txt-color=#0000f0]If drBancos([Ô]BcoDescricao[Ô]) Is DBNull.Value = False Then
txtBcoDescricao.Text = drBancos([Ô]BcoDescricao[Ô])
Else
txtBcoDescricao.Text = [Ô][Ô]
End If[/txt-color]

Eu sempre salvo campo vazio no Banco com exceção de Datas que caso vazias salvam NULL

O codigo em azul tem como fazer diferente? Tipo mais resumido
MICHAELL 10/07/2016 14:33:44
#464692
Citação:

:
Eu faço assim no VB.NET:

[txt-color=#0000f0]If drBancos([Ô]BcoDescricao[Ô]) Is DBNull.Value = False Then
txtBcoDescricao.Text = drBancos([Ô]BcoDescricao[Ô])
Else
txtBcoDescricao.Text = [Ô][Ô]
End If[/txt-color]

Eu sempre salvo campo vazio no Banco com exceção de Datas que caso vazias salvam NULL

O codigo em azul tem como fazer diferente? Tipo mais resumido



faz assim:
txtBcoDescricao.Text = drBancos([Ô]BcoDescricao[Ô]) Is DBNull.Value = true ? drBancos([Ô]BcoDescricao[Ô]) : [Ô][Ô]
JCM0867 10/07/2016 22:20:42
#464696
Citação:

faz assim:
txtBcoDescricao.Text = drBancos([Ô]BcoDescricao[Ô]) Is DBNull.Value = true ? drBancos([Ô]BcoDescricao[Ô]) : [Ô][Ô]



Valeu
Tópico encerrado , respostas não são mais permitidas