CONVERTER NULL EM STRING TOSTRING
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
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)
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
Ex:
private int? SeuCampo = null;
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();
[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
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[Ô]) : [Ô][Ô]
Citação:faz assim:
txtBcoDescricao.Text = drBancos([Ô]BcoDescricao[Ô]) Is DBNull.Value = true ? drBancos([Ô]BcoDescricao[Ô]) : [Ô][Ô]
Valeu