代码之家  ›  专栏  ›  技术社区  ›  Nagaraj Tantri

使用isdbnull将空值存储回数据库

sql
  •  0
  • Nagaraj Tantri  · 技术社区  · 14 年前

    我在ASP.NET中有许多文本框,它接受用户的值,并通过SQL Server将其存储到SQL数据库中。 当用户没有在文本框中输入值时,这意味着我可以允许表中的文件为空,但是如果它的整数变量存储为0,那是因为

    int HostelFees ;
    HostelFees = TextBox1.Text;
    //function called to store the hostel fee
    insertFee(hostelFees);
    

    在数据库中,它存储0,我不希望它是空的。 我查阅了许多文档,对isdbnull只有一点了解,但在插入时仍然对如何插入null感到困惑。:(我没有使用任何存储过程的。在功能上的影响 insertFee(hostelFees) 我只是使用command.executeNonQuery插入它

    请任何人给我适当的解释或我所指的链接。 谢谢您,

    2 回复  |  直到 14 年前
        1
  •  1
  •   Prutswonder    14 年前

    你应该考虑使用 int? ,这是一个 nullable version 属于 int . 在这种情况下,您可以使用 HostelFees.HasValue 检查是否存储了空值,以及 HostelFees.Value 使用整数部分。

    请注意,在示例中,您直接将字符串值存储到一个整数变量中。那不行。你想要的是先解析它,然后存储 null 如果不是整数。像这样:

    int? HostelFees = null;
    int parsedValue;
    
    if (int.TryParse(TextBox1.Text, out parsedValue)) {
        HostelFees = parsedValue;
    }
    
    //function called to store the hostel fee
    insertFee(hostelFees);
    

    您可以使用以下构造,而不是直接将整数值赋给dbparameter:

    parameter.Value = (HostelFees.HasValue ? HostelFees.Value : DbNull.Value);
    
        2
  •  1
  •   Flakron Bytyqi    14 年前

    您的整数值应该可以为空,只需添加?类型声明之后

    int? HostelFees ;