日期:2014-05-17  浏览次数:20442 次

ASP.NET,存储过程。问题很简单,但我偏不能解决
SqlCommand com = con.CreateCommand();
  com.CommandText = "get_paper_id";
  com.CommandType = CommandType.StoredProcedure;
  com.Parameters.AddWithValue("@course", "计算机体系结构");
  com.Parameters.AddWithValue("@year", "2022");
  com.Parameters.AddWithValue("@semester", "第一学期");
  com.Parameters.AddWithValue("@paper_name", "计算机体系结构");
  com.Parameters.Add("@id", SqlDbType.VarChar);
  com.Parameters["@id"].Direction = ParameterDirection.Output;
  com.ExecuteNonQuery();

ALTER PROCEDURE [dbo].[get_paper_id]
@course varchar(30),
@year varchar(10),
@semester varchar(8),
@paper_name varchar(100),
@id varchar(10) output
AS
select @id=id from paper where 课程=@course and 年份=@year and 学期=@semester and 试题=@paper_name
return

连接啊什么的,其他的都没问题的,数据库中也存在对应数据,偶核对多次,没问题的。但结果就是报错,偶放到了SQL Server上试试,同一个数据库,这存储过程使用正常啊,那问题应该是ASP.NET中的问题了。
但我看来看去,不知所以然。
报错:String[4]: Size 属性具有无效大小值 0。

执行到com.ExecuteNonQuery();执行这句就断了。

------解决方案--------------------
com.Parameters.Add("@id", SqlDbType.VarChar, 10);