我有一个包含很少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)
但它似乎没有被转换..
答案 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);