错误的代码调错

R_zhanche 2010-12-26 01:18:59

public DataSet GetListByClassId(Pagination pagetion, int classID, out int totalPage, out int totalCount)
{
pagetion.Fields = "";
string condition = "News_classId=" + classID.ToString();
pagetion.TableName = "Tb_News";
pagetion.Fields = "*";
pagetion.IsGroup = 0;
pagetion.TotalCount =0;
pagetion.PageCount = 0;
pagetion.GroupColumn = "News_id ";
pagetion.Condition = " 1=1 ";
SqlParameter[] para = new SqlParameter[]
{
new SqlParameter("@Table",pagetion.TableName),
new SqlParameter("@OrderColumn","News_id"),
new SqlParameter("@TotalCount", pagetion.TotalCount),
new SqlParameter("@TotalPage", pagetion.PageCount),
new SqlParameter("@CurrentPage",pagetion.PageIndex),
new SqlParameter("@PageSize",pagetion.PageSize),
new SqlParameter("@Group",pagetion.IsGroup),
new SqlParameter("@GroupColumn",pagetion.GroupColumn),
new SqlParameter("@Column",pagetion.Fields),
new SqlParameter("@Condition",pagetion.Condition)
};
return DBHelper.GetDataSet("[Pro]", "Tb_News", para);

}

 /// <summary>
/// 执行有参存储过程,并返DataSet
/// </summary>
public static DataSet GetDataSet(string prcName,string tableName, params SqlParameter[] values)
{
SqlCommand cmd = new SqlCommand(prcName, Connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddRange(values);

SqlDataAdapter adp = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adp.Fill(ds,tableName);
return ds;
}

我想在调用方法的同时输出2个参数
存储过程中已经能过输出总页数和总条数,但是调用时出现
The out parameter 'totalPage' must be assigned to before control leaves the current method
应该怎样改下相关方法?
...全文
164 10 打赏 收藏 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
R_zhanche 2010-12-31
  • 打赏
  • 举报
回复
顶起来 希望尽快解决问题
R_zhanche 2010-12-27
  • 打赏
  • 举报
回复
还没有解决 求帮忙
zhangcong002 2010-12-26
  • 打赏
  • 举报
回复
这是代码!怎么多,我看是乱码吧!
R_zhanche 2010-12-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ds252743641 的回复:]

C# code
SqlParameter p = new SqlParameter();
p.ParameterName = "@TotalPage";
p.Size = 50;
p.Direction = ParameterDirection.Output;

我改成了这样


SqlParameter totalCountPara = new SqlParameter("@TotalCount", SqlDbType.Int, 4);
totalCountPara.Direction = ParameterDirection.Output;
totalCountPara.Value = 2;
SqlParameter totalPagePara = new SqlParameter("@TotalPage", SqlDbType.Int, 4);
totalPagePara.Direction = ParameterDirection.Output;
totalPagePara.Value = 2;
SqlParameter[] para = new SqlParameter[]
{
new SqlParameter("@Table",pagetion.TableName),
new SqlParameter("@OrderColumn","News_id"),
totalCountPara,
totalPagePara,
new SqlParameter("@CurrentPage",pagetion.PageIndex),
new SqlParameter("@PageSize",pagetion.PageSize),
new SqlParameter("@Group",pagetion.IsGroup),
new SqlParameter("@GroupColumn",pagetion.GroupColumn),
new SqlParameter("@Column",pagetion.Fields),
new SqlParameter("@Condition",pagetion.Condition)
};
还是会报错 怎么样才算是提前赋值呢?





string 取得的值 = para[3].Value.ToS……
[/Quote]
ds252743641 2010-12-26
  • 打赏
  • 举报
回复
 SqlParameter p = new SqlParameter();
p.ParameterName = "@TotalPage";
p.Size = 50;
p.Direction = ParameterDirection.Output;



string 取得的值 = para[3].Value.ToString();
R_zhanche 2010-12-26
  • 打赏
  • 举报
回复
我想全换成out 然后设定参数的输出类型是out 不知道怎么实例化
子夜__ 2010-12-26
  • 打赏
  • 举报
回复
你把参数里面的两个out 改成ref
R_zhanche 2010-12-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyq11 的回复:]

ref 或先赋值
[/Quote]
  pagetion.TotalCount =0;
pagetion.PageCount = 0;

不算是先赋值吗?
wuyq11 2010-12-26
  • 打赏
  • 举报
回复
ref 或先赋值
wuyq11 2010-12-26
  • 打赏
  • 举报
回复
out 的参数必须在离开Statement之前赋值
编译器会检查所有可能的执行路径,保证参数在离开方法之前赋值。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧