在一个Oracle的分页存储过程中,返回记录集游标和记录集总数。然后我把对这个存储过程的访问封装在一个类的方法中,这个方法返回OracleDataReader数据集,同时通过引用参数返回记录集总数。问题是要返回DataReader就不能把OracleConnection关闭,那什么时候关闭连接?
同时,由于存储过程有两个出参数,不能用ExecuteReader()执行,也就不能使用System.Data.CommandBehavior.CloseConnection参数。这个问题如何解决呢?50分求解,大侠帮忙!!!
同时,由于存储过程有两个出参数,不能用ExecuteReader()执行,也就不能使用System.Data.CommandBehavior.CloseConnection参数。这个问题如何解决呢?50分求解,大侠帮忙!!!
解决方案 »
- 防sql 注入代码
- linq 静态DataContext异常
- 用复合语句好,还是用几个简单的语句好?
- c#中怎么在指定表格中插入一行
- 请问应该用什么验证控件来验证CheckBoxList,使它至少要有一项选中?
- 关于SELECT合并的问题===============很急 谢谢了
- 请教一个很基础的问题,如何自定义数据类型并使用!
- 在VML中定义了一个group有它自己的坐标coordsize="3000,3000",在group中又定义了一个line,line的定位是根据group中的坐标来定义的,但如果
- 收藏个东东,Asp.Net常用函数
- 基于XML、JavaScript的TreeView 的代码找不到,谁能给我一个,谢谢!!
- 图片服务器与主数据分离的问题
- (vb)怎么接收到url参数id号,详细页面里显示出对应的记录
另外用datatable也可.
myCommand.CommandType = CommandType.StoredProcedure;OracleParameter[] myParams = { new OracleParameter("PageSize",PageSize), new OracleParameter("PageNo",PageNo),
new OracleParameter("SqlSelect",SqlSelect),
new OracleParameter("OutRecordCount",OracleType.Number),
new OracleParameter("myCursor",OracleType.Cursor),};
myParams[3].Direction = ParameterDirection.Output;
myParams[4].Direction = ParameterDirection.Output;
OracleDataReader DR;
foreach (OracleParameter m in myParams)
{
myCommand.Parameters.Add(m);
}
try
{
myConn.Open();
//myCommand.ExecuteNonQuery();
myCommand.ExecuteReader();
count = Int32.Parse(myCommand.Parameters["OutRecordCount"].Value.ToString());
DR = (OracleDataReader)myCommand.Parameters["myCursor"].Value;
}
catch(Exception ex)
{
DR = null;
throw ex;
}
finally
{
}
return DR;以上是我的代码片段,如果用ExecuteReader()会提示“指定的转换无效”,但是如果用ExecuteNonQuery()就可以正确执行,不知道错在哪里啊
try.
dr.NextResult();