none
dúvida para concatenar sql RRS feed

  • Pergunta

  • Olá pessoal, na rotina abaixo, estou tentando gravar DTPAGTO como NULL se dto.Dtpagto for branco, senão grava em DTPAGTO uma data válida.

    Estou cancatenando para criar a rotina, mas não consigo colocar uma decisão no caso de DTPAGO, qual a maneira correta de criar essa sql ?

    string comando = "UPDATE LANDESPESAS set CODDESP = '" + dto.Coddesp +
    "'," + "DATA = '"       + dto.Data +
    "'," + "VENCIMENTO = '" + dto.Vencimento +

    if (dto.Dtpagto != "")
    {
       comando = comando + "'," + "DTPAGTO = '" + dto.Dtpagto +
    }
    else
    {
       comando = comando + "'," + "DTPAGTO = NULL'" + "'" +
    }
    "' where ID = " + dto.Id;
     bd.ExecutarComandoSQL(comando);

    C#, windowsForm, MySQL

    terça-feira, 7 de janeiro de 2020 18:13

Todas as Respostas

  • Porter Porter,

       Posso estar enganado, mas uma variável Date nunca fica nula a não ser que você coloque uma "?" (C#) ou "As Nullable(Of " (VB.Net) interrogação na declaração.

       Quando a variável é criada ela automaticamente assume o valor:
    "#1/1/0001 12:00:00 AM#"

       Será isso considerado "nulo" (entre aspas)?

       Veja mais em:

    =====================================
    DateTime “null” value

    DateTime? MyNullableDate;

    https://stackoverflow.com/questions/221732/datetime-null-value
    =====================================
    VB .NET - Nothing , Null (DBNull.Value) e Nullabe Types

    VB.NET:
    Dim dataNascimento As Nullable(Of DateTime) 

    C#:
    DataTime? dataNascimento = null; 

    http://macoratti.net/10/04/vbn_nult.htm
    =====================================


    []'s,
    Fabio I.
    • Editado Fabio I terça-feira, 7 de janeiro de 2020 18:22
    terça-feira, 7 de janeiro de 2020 18:22
  • Olá Fábio, nessa minha rotina sql, como faço para ignorar o campo DTPAGTO, se uma determinada variável estiver vazia, a intenção é não gravar nada em DTPAGTO.

    Obrigado.

    terça-feira, 7 de janeiro de 2020 18:59
  • Porter Porter,

        Você tem que passar "DBNull" para o campo...
        ... ou "vazio" ("") ... detalhe: São coisas diferentes.

    =======================================
    DBNull.Value Campo

    https://docs.microsoft.com/pt-br/dotnet/api/system.dbnull.value?view=netframework-4.8
    =======================================
    DBNull - SQL Server - Fórum iMasters

    https://forum.imasters.com.br/topic/423481-dbnull/
    =======================================
    Inserting a DBNull value into a database

    public static object PriceOrDefault(this ItemsType items)
    {
        return items.Price == null ? DBNull.Value : (object)items.Price;
    }

    new SqlParameter("@Price",  items.Price ?? SqlDecimal.Null),

    https://codereview.stackexchange.com/questions/143759/inserting-a-dbnull-value-into-a-database
    =======================================


    []'s,
    Fabio I.

    • Editado Fabio I terça-feira, 7 de janeiro de 2020 19:06
    terça-feira, 7 de janeiro de 2020 19:05