当我的文本框为空时,向数据库添加NULL值的最佳方法

时间:2012-07-23 05:44:07

标签: jquery asp.net sql-server

问题出现在executeScalar上,我的sql语句没有返回任何内容

我的表格中有一些Int32类型的值,其他日期时间值可以为空。 我想要的是当用户没有填充文本框以插入空值而不是“”(空格)时,我的字段的类型不正确。

enter image description here

我尝试了以下想法:

insertActor.Parameters.AddWithValue("@School2StartYear", String.IsNullOrWhiteSpace(txtSchool2StartYear.Text) ? (object)DBNull.Value : (object)Int16.Parse(txtSchool2StartYear.Text));

我必须为 15个表格(包含30多个字段)执行此操作。

我也看过jQuery的.validate()函数,但我根本没试过。

我也看到了这个想法:[DisplayFormat(ConvertEmptyStringToNull = true)]

我是否必须在数据库中执行此操作?当添加''时将其转换为NULL?

这是最好的方法吗?检查所有文本框是否为IsNullOrWhiteSpace

3 个答案:

答案 0 :(得分:1)

我通常只是排除参数:

Int16 school2StartYear;
if (Int16.TryParse(txtSchool2StartYear.Text, out school2StartYear) {
    insertActor.Parameters.AddWithValue("@School2StartYear", school2StartYear);
}

您的SQL代码会将参数声明为@School2StartYear smallint = NULL,以便在排除参数时使用NULL作为默认值。

答案 1 :(得分:1)

异常可能是因为语句的结果为null,而不是因为输入值不正确。尝试将执行拆分为:

object result = insertActor.ExecuteScalar();
newID = Int32.Parse(result.ToString());

我怀疑结果是null,这会在调用ToString方法时导致NullReferenceException。

新id应该来自return语句,输出参数,select语句吗?

答案 2 :(得分:0)

您可以使用IsDBNull检查

Convert.IsDBNull (txtSchool2StartYear) ? 0:int.Parse (txtSchool2StartYear);