1

我有一个包含几个 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

4 回答 4

3

Convert.ToInt32(TextBox5.Text)空字符串总是会失败。所以检查一下:

object val = string.IsNullOrEmpty(theString) ? (object)DBNull.Value
                                             : int.Parse(theString);
于 2012-08-11T08:18:09.223 回答
1

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

于 2012-08-11T08:09:50.740 回答
1

确保手机号码是必填字段

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

于 2012-08-11T10:17:21.520 回答
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 值插入数据库

更新地址用户评论 如果您使用的是 numeric(10,0),请将 TextBox5 值转换为十进制并将存储过程从 varchar(10) 更改为 numeric(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);
于 2012-08-11T08:12:39.573 回答