未插入NULL值

时间:2012-08-11 08:05:17

标签: c# asp.net sql-server-2008

我有一个包含很少NULL列的表..我已经创建了一个存储过程。

当我在Web表单的控件中输入值时,我需要在所有字段中键入值 或者,我收到一个错误说:

  

System.FormatException:输入字符串的格式不正确。

就行:

cmd.Parameters.Add(new SqlParameter("@Mob2", Convert.ToInt32(TextBox5.Text)));

我甚至尝试过做

cmd.Parameters.Add(new SqlParameter("@Mob2", int.parse(TextBox5.Text)));

但我无法在TextBox控件中将其保留为NULL ..

在表中,数据类型为numeric(10,0) ..在我提到的存储过程中为nvarchar(10),插入时我已按此转换,

Convert(numeric(10,0),@Mob2)

但它似乎没有被转换..

4 个答案:

答案 0 :(得分:3)

对于空字符串,

Convert.ToInt32(TextBox5.Text)将始终失败。所以检查一下:

object val = string.IsNullOrEmpty(theString) ? (object)DBNull.Value
                                             : int.Parse(theString);

答案 1 :(得分:1)

检查TextBox5.Text的值,与文本框值相关的问题

答案 2 :(得分:1)

确保手机号码是必填字段

如果不是,请确保在数据库表中mobile number字段未选中数据库表中的NULL。这就是你得到这种错误的方式。

答案 3 :(得分:0)

你试图将一个空字符串解析为一个整数,你不能使用int.TryParse或者如果你在数据库字段中插入一个空值,那么就是:

cmd.Parameters.Add(new SqlParameter("@Mob2", 
!string.IsNullOrEmpty(TextBox5.Text.Trim()) ?int.parse(TextBox5.Text) 
: SqlInt32.Null));

如果TextBox5.Text == null或为空

,则将Sql Int32 null值插入数据库

更新用户评论 如果您正在使用数字(10,0),将TextBox5值转换为十进制并将存储过程从varchar(10)更改为数字(10,0)以匹配表列数据类型,那么您可以使用类似于:

SqlParameter numericParameter = new SqlParameter("NumericValue",SqlDbType.Decimal);
numericParameter.Precision = 10;
numericParameter.Scale = 0;
numericParameter.Value = !string.IsNullOrEmpty(TextBox5.Text.Trim()) ?decimal.parse(TextBox5.Text) 
: SqlInt32.Null);