`
java-mans
  • 浏览: 11339454 次
文章分类
社区版块
存档分类
最新评论

SqlCommand.ExecuteReader 无法获取 sqlserver 存储过程 OUTPUT 返回的参数值问题

 
阅读更多

public List<Product> GetProducts(long companyId, int pageSize, int pageIndex, out int rowCount)
{
List<Product> list = new List<Product>();
using (SqlConnection conn = new SqlConnection(SQLHelp.DBConnectionString))
{
SqlCommand cmd = new SqlCommand();

cmd.Connection = conn;
cmd.CommandText = "proc_Care365_ProductPage";
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add(new SqlParameter("@CompanyId", companyId));
cmd.Parameters.Add(new SqlParameter("@PageSize", pageSize));
cmd.Parameters.Add(new SqlParameter("@PageIndex", pageIndex));

SqlParameter param = new SqlParameter("@RowCount", SqlDbType.Int);
param.Direction = ParameterDirection.Output;
cmd.Parameters.Add(param);

try
{
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
if (reader != null && !reader.IsClosed && reader.HasRows)
{
while (reader.Read())
{
Product p = FabricateProduct(reader);
p.Tags = new ProductTageDAL().GetProductTags(p.Id);
p.Images = new ProductImageDAL().GetImagesByProductId(p.Id);

list.Add(p);
}

reader.Close();
reader.Dispose();
rowCount = Convert.ToInt32(cmd.Parameters["@RowCount"].Value.ToString());
cmd.Dispose();
conn.Close();
conn.Dispose();

return list;
}
else
{
rowCount = 0;
return null;
}
}
catch
{
rowCount = 0;
return null;
}
}
}

这里要注意的是,在获取output类型参数的值的时候,必须要把reader关掉,否则无法获取值.

分享到:
评论

相关推荐

    C# winform调用SQL存储过程-菜鸟入门 详细注释

    内容概要:简单的C# winform调用存储过程实例,创建存储过程入参,通过SqlConnection对象和SqlCommand对象调用存储过程,获取存储过程的出参并显示出来,详细代码注释,希望对用到C#调用存储过程的小伙伴有帮助 ...

    C#访问数据库资源库(支持Access、MSSql、MySql、Oracle等)让数据库访问更便捷,更稳定

    UGM.Common.DAL.DB.DBMSSqlDAL.ExecuteReader(string SQLString, params SqlParameter[] cmdParms) UGM.Common.DAL.DB.DBMSSqlDAL.ExecuteReader(string ConnString, string SQLString, params SqlParameter[] ...

    mysqlhelper

    dataReader = CreateCommand(procName, prams).ExecuteReader(CommandBehavior.CloseConnection); } public static void RunProcNon(string procName, SqlParameter[] prams) { OpenConnect(); CreateCommand...

    DBHelper方便连接数据库 DBHelper

    SqlDataReader reader = cmd.ExecuteReader(); return reader; reader.Close(); reader.Dispose(); } public static SqlDataReader GetReader(string sql, params SqlParameter[] values) { SqlCommand cmd...

    使用Sqlcommand执行SQL语句

    使用Sqlcommand执行SQL语句使用Sqlcommand执行SQL语句

    C#获取存储过程返回值和输出参数值的方法

    代码如下://存储过程//Create PROCEDURE MYSQL// @a int,// @b int//AS// return @a + @b//GOSqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[“LocalSqlServer”].ToString())...

    c#数据库操作的3种典型用法

    SqlDataReader sqlDataReader = sqlCommand.ExecuteReader(); while(sqlDataReader.Read()) { //Get KeywordID and KeywordName , You can do anything you like. Here I just output them. ...

    SQL SERVER备份数据库存储过程的方法

    sqlserver批量导出存储过程 在查询分析器中,选中数据库——》右键“任务”——》在弹出菜单中选择“生成脚本” ——》“下一步”——》选择你要存储过程所在数据库——》 “下一步”——》勾选“存储过程”,并下...

    C#访问SQL Server数据库的实现方法

    SqlConnection类用于建立与数据库的连接,SqlCommand类用于创建SQL命令,SqlDataReader对象是执行SqlCommand对象返回结果集的查询语句后的结果。 下面是部分代码: /*其中server表示服务器,“.”表示当地服务器,...

    使用ado访问sql server数据库的实验报告

    //创建并返回一个与SqlConnection相关联的SqlCommand 对象 SqlCommand thisCommand=thisConnection.CreateCommand(); thisCommand.CommandText="select * from student";//获取或设置要对数据源执行的SQL...

    my sql与sql server实时同步源码,自定义设置同步时间

    SqlCommand sqlcom = new SqlCommand("insert into oa_smsend( Mobile,Content) values('" + phone + "','" + verify + "') ", this.my_sql_con); sqlcom.ExecuteNonQuery(); last_id = id; my_sql_con.Close();...

    CMS.DBUtility.dll

    /// 执行SQL语句,返回影响的记录数 /// /// &lt;param name="SQLString"&gt;SQL语句 /// 影响的记录数 public static int ExecuteSql(string SQLString) { using (SqlConnection connection = new SqlConnection...

    C#访问SqlServer设置链接超时的方法

    本文实例讲述了C#访问SqlServer设置链接超时的方法。分享给大家供大家参考。具体实现方法如下: 下面这段代码设置超时时间为60秒,默认为30秒 using (connection) { SqlCommand sqlcommand = connection....

    sql server中通过查询分析器实现数据库的备份与恢复方法分享

    sql server中通过查询分析器实现数据库的备份与恢复方法分享,需要备份或还原数据库的朋友可以参考下

    .net下调用sqlserver存储过程的小例子

    在sqlserver中创建存储过程,在调用时分为有参数和没有参数两种情况,先就简单的没有参数的情况简要的介绍: 假设存储过程如下: 代码如下: create proc selectall as select * from studentinf 则此sp的调用如下:...

    用C#和SQLserver数据库制作的学生成绩管理系统

    用C#和SQLserver数据库制作的学生成绩管理系统,不足之处请多指教

    MysqlDLL,C#操作MYSQL数据库

     Connectionstring//获取或设置用于打开 SQL Server 数据库的字符串  方法: Open()  Close() Dispose()//释放所有资源   2、SqlCommand类  构造函数:SqlCommand(string,conn) 属性: ...

    图书管理系统附数据库

    SqlDataReader sdr = cmd.ExecuteReader(); while (sdr.Read()) { ListViewItem lvi = new ListViewItem(); lvi.Text = sdr["number"].ToString(); lvi.SubItems.Add(sdr["bookname"].ToString()); lvi....

    asp.net小实例解析

    // 通过存储过程的输出参数来返回购物车总图书量 return ((int)parameterItemCount.Value); } /// /// 根据购物车ID获取购物车信息 /// /// 购物车ID /// &lt;returns&gt;DataReader:购物车具体信息...

    .net数据访问类 SQL Helper 类

    摘要:Data Access Application Block 是一个 .NET 组件,包含优化的数据访问代码,可以帮助用户调用存储过程以及向 SQL Server 数据库发出 SQL 文本命令。它返回 SqlDataReader、DataSet 和 XmlReader 对象。您可以...

Global site tag (gtag.js) - Google Analytics