C# c语言中的SqlException

C# c语言中的SqlException,c#,sql-server,stored-procedures,sqlexception,C#,Sql Server,Stored Procedures,Sqlexception,我有一个调用存储过程的函数。但它抛出了一个异常,比如: “System.Data.SqlClient.SqlException”类型的未处理异常 发生在System.Data.dll中 其他信息:无效的列名“数量” 列名称“数量”无效。 列名“location”无效。 列名称“数量”无效。 列名称“数量”无效。 无效的列名称“数量” 我不明白为什么会抛出此异常,因为存储过程在MSMS中运行良好 下面是我调用存储过程的代码: public DataSet getDataTable_sp(strin

我有一个调用存储过程的函数。但它抛出了一个异常,比如:

“System.Data.SqlClient.SqlException”类型的未处理异常 发生在System.Data.dll中 其他信息:无效的列名“数量”

列名称“数量”无效。 列名“location”无效。 列名称“数量”无效。 列名称“数量”无效。 无效的列名称“数量”

我不明白为什么会抛出此异常,因为存储过程在MSMS中运行良好

下面是我调用存储过程的代码:

public DataSet getDataTable_sp(string sp_name, SqlParameter[] p = null)
{
            DataSet ds = new DataSet();

            using (SqlConnection conn = new SqlConnection(Connstr))
            {
                SqlDataAdapter da = new SqlDataAdapter(sp_name,conn);
                da.SelectCommand.CommandType = CommandType.StoredProcedure;
                da.SelectCommand.CommandTimeout = 300;

                if (p != null)
                    for (int i = 0; i < p.Count(); i++)
                        da.SelectCommand.Parameters.Add(p[i].ParameterName, p[i].SqlDbType, p[i].Size).Value = p[i].Value;

                conn.Open();
                da.Fill(ds); // this is the line that the exception is thrown
                conn.Close();
            }

            return ds;
}

我以前也遇到过同样的错误,我认为问题出在您的存储过程上。尝试检查所有声明,特别是临时表。我不知道这对你是否有效。尽量避免使用相同的临时表名称。试试看:

检查列名,存储过程中的列必须与模型中声明的属性相同。

我认为例外情况很清楚:无效的列名“quantity”表示没有名为“quantity”的列。您可能连接到错误的数据库,或者需要先创建表。请检查连接是否正确。是的,您是对的。我在存储过程中有相同的临时表名。我很高兴能够帮助您: