Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 输入字符串的格式不正确#_C#_Sql_.net_Sql Server - Fatal编程技术网

C# 输入字符串的格式不正确#

C# 输入字符串的格式不正确#,c#,sql,.net,sql-server,C#,Sql,.net,Sql Server,我的数据库中有一个存储过程,我正在用下面的代码执行它。我将一个参数传递给这个存储过程,当返回数据并在while循环中读取时,我会得到一个格式不正确的输入字符串异常,即使我将一个值硬编码到查询参数中 var response = DataAccessBridge.IADODao.CommandWrapperSelect<List<FeaturePack>>(command => { var result = new List&l

我的数据库中有一个存储过程,我正在用下面的代码执行它。我将一个参数传递给这个存储过程,当返回数据并在while循环中读取时,我会得到一个格式不正确的输入字符串异常,即使我将一个值硬编码到查询参数中

var response = DataAccessBridge.IADODao.CommandWrapperSelect<List<FeaturePack>>(command =>
        {
            var result = new List<FeaturePack>();
            const string storedProc = "dbo.usp_PSTN_GetFeaturePacks";


            // Add the input parameter and set its properties.
            SqlParameter parameter = new SqlParameter();
            parameter.ParameterName = "@FeaturePack";
            parameter.SqlDbType = SqlDbType.Int;
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = featurePackId;

            command.CommandType = CommandType.StoredProcedure;
            command.Parameters.Add(parameter);
            command.CommandText = storedProc;

            var dataReader = command.ExecuteReader();

            while (dataReader.Read())
            {
                result.Add(new FeaturePack
                {
                    FeaturePackId = Convert.ToInt32(dataReader["featurePack"].ToString()),
                    FeatureId = Convert.ToInt32(dataReader["featureId"].ToString()),
                    Description = dataReader["Description"].ToString(),
                    AlwaysOn = Convert.ToInt32(dataReader["alwaysOn"].ToString()),
                });
            }

            return result;
        });

在本例中,参数被硬编码为1,我仍然收到此错误。

尽管您没有告诉我们,但您几乎肯定会在以下行中的一行中得到异常:

FeaturePackId = Convert.ToInt32(dataReader["featurePack"].ToString()),
FeatureId = Convert.ToInt32(dataReader["featureId"].ToString()),

AlwaysOn = Convert.ToInt32(dataReader["alwaysOn"].ToString()),

这是因为其中一行的值不能转换为整数。您应该调试代码以找到它失败的行,并查看失败行的列
featurePack
featureId
alwaysOn
的值。其中一个不是整数值。

过程为
featurePack
返回的数据类型是什么,以及过程中为参数指定的类型是什么。可能您正在返回
null
,请使用
DBNull.Value检查异常发生在哪一行?当您单步执行代码时,您看到字符串的值是什么?如果您调试该while循环,您将能够看到导致问题的值,并且应该从中明确问题的原因。或设置为在引发异常时中断:。我们无法猜测返回的数据是什么,但您可以看到它。@TimSchmelter好的,我在查看后删除了,我不知道我的“子问题”是否有意义(它开始对我没有意义,我问了它xD)-现在您的回答没有意义(有意义,但没有上下文,所以似乎是随机的),因为我的问题不存在了-doh!对不起,谢谢你的回复
FeaturePackId = Convert.ToInt32(dataReader["featurePack"].ToString()),
FeatureId = Convert.ToInt32(dataReader["featureId"].ToString()),

AlwaysOn = Convert.ToInt32(dataReader["alwaysOn"].ToString()),