错误的代码调错

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
应该怎样改下相关方法?
...全文
105 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创作助手写篇文章吧