public IList<ProductInfo> GetProudctsByPage(string tableName, string fieldName, string strWhere, int orderType, string orderBy, int pageSize,int pageIndex, out int RecordCount)
{
IList<ProductInfo> lists = new List<ProductInfo>();
SqlParameter[] parms = new SqlParameter[] {
new SqlParameter("@TableName",SqlDbType.NVarChar,255),
new SqlParameter("@FieldName",SqlDbType.NVarChar,2000),
new SqlParameter("@QueryWhere",SqlDbType.NVarChar,2000),
new SqlParameter("@OrderType",SqlDbType.Int,4),
new SqlParameter("@OrderBy",SqlDbType.NVarChar,255),
new SqlParameter("@PageSize",SqlDbType.Int,4),
new SqlParameter("@PageIndex",SqlDbType.Int,4),
new SqlParameter("@RecordCount",SqlDbType.Int,4)};
parms[0].Value = tableName;
parms[1].Value = fieldName;
if (string.IsNullOrEmpty(strWhere))
parms[2].Value = DBNull.Value;
else
parms[2].Value = strWhere;
parms[3].Value = orderType;
if (string.IsNullOrEmpty(orderBy))
parms[4].Value = DBNull.Value;
else
parms[4].Value = orderBy;
parms[5].Value = pageSize;
parms[6].Value = pageIndex;
parms[7].Value = ParameterDirection.Output;
using (SqlDataReader dr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.StoredProcedure, "P_Page", parms))
{
while (dr.Read())
{
var item=....
lists.Add(item);
}
}
RecordCount = Convert.ToInt32(parms[7].Value);
return lists;
}为什么我这里的parms[7].Value总是等于2。
EXECUTE @RC = [Tree].[dbo].[P_Page]
'[Product]'
,'field'
,null
,0
,null
,1
,1
,@RecordCount OUTPUT
上面这个是我执行存储过程
执行结果如下图片应该看得到吧
解决方案 »
- 关于GridView执行查询后再翻页时绑定数据源的问题
- 请问:如何弹出窗口,关闭系统窗口??
- 访问路径 “xxxx.aspx?act=acc+bac&id=45 ” 获取完整带‘+’值
- javascript 变量和函数的作用域问题
- 求助!新手,想找个简单的例子理解asp.net的三层架构,要c#的,vb不懂!
- 脚本函数不执行?
- 在.Net2.0中使用梅花雨日历控件疑问,急~~~~~~~~
- 其中A一个页面,向B的一个页面的左框架中传值.怎么实现啊?各位帮我看看啊,谢谢了
- 为什么网址的正则表达式是这样的: http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
- 请教更改winform中datagridview生成button颜色问题
- asp.net button打开文件对话框
- 【叶子....】请教大家个问题 帮顶有分
parms[7].Direction=ParameterDirection.Output?
EXECUTE [Tree].[dbo].[P_Page]
'[Product]'
,'field'
,null
,0
,null
,1
,1
,@RecordCount OUTPUT
print(@RecordCount)
parms[7].Direction= ParameterDirection.Output
{
int Count = 0;
IList<ProductInfo> lists = new List<ProductInfo>();
SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction);
try
{
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "P_Page";
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter[] parms = new SqlParameter[] {
new SqlParameter("@TableName",SqlDbType.NVarChar,255),
new SqlParameter("@FieldName",SqlDbType.NVarChar,2000),
new SqlParameter("@QueryWhere",SqlDbType.NVarChar,2000),
new SqlParameter("@OrderType",SqlDbType.Int,4),
new SqlParameter("@OrderBy",SqlDbType.NVarChar,255),
new SqlParameter("@PageSize",SqlDbType.Int,4),
new SqlParameter("@PageIndex",SqlDbType.Int,4),
new SqlParameter("@RecordCount",SqlDbType.Int,4)};
parms[0].Value = tableName;
parms[1].Value = fieldName;
if (string.IsNullOrEmpty(strWhere))
parms[2].Value = DBNull.Value;
else
parms[2].Value = strWhere;
parms[3].Value = orderType;
if (string.IsNullOrEmpty(orderBy))
parms[4].Value = DBNull.Value;
else
parms[4].Value = orderBy;
parms[5].Value = pageSize;
parms[6].Value = pageIndex;
parms[7].Direction = ParameterDirection.Output; foreach (SqlParameter parm in parms)
cmd.Parameters.Add(parm); SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
var item = new ProductInfo { xx... };
lists.Add(item);
}
dr.Close();
//Display the output parameter Count = Convert.ToInt32(parms[7].Value);// Convert.ToInt32(cmd.Parameters["@RecordCount"].Value);
}
catch (SqlException ex)
{
Console.WriteLine("Error:{0}", ex.Message);
}
finally
{
conn.Close();
}
}我这样子写就有参数输出正确
try {
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear(); //这里把参数给清除了。
return rdr;
}结帖给分