zoukankan      html  css  js  c++  java
  • Nhibernate 存储过程获取返回值

      写在前面:因为项目使用ssh.net所以做着做着要调用存储过程,而且是有返回值的,按照以前的做法直接在参数里指定下就可以获取,但是在nhibernate里调用就有点陌生了,百度一下得出的结果有两种:第一种是用的配置反正就是各种配置,最后能实现。第二种跟以前比较接近但是不是完全符合,然后针对现有情况就改了一下现在代码如下

     1 #region ExecuteStoredProcForQuery
     2         public void ExcuteStoreProcForReturn(String spName, IList<param> param,out object result)
     3         {
     4             var session = _sessionFactory.OpenSession();
     5             IDbCommand cmd = session.Connection.CreateCommand();
     6             cmd.CommandText = spName;
     7             cmd.CommandType = CommandType.StoredProcedure;
     8             if (param.Count > 0)
     9             {
    10                 foreach (ParamInfo info in param)
    11                 {
    12                     IDbDataParameter parameter = cmd.CreateParameter();
    13                     parameter.ParameterName = info.Name; //
    14                     parameter.Value = info.Value;
    15                     if (info.Name == "@result")
    16                     {
    17                         parameter.Direction = ParameterDirection.Output;
    18                     }
    19                     cmd.Parameters.Add(parameter);
    20                 }
    21             }
    22             IDbConnection conn = session.Connection;
    23                 if (conn.State == ConnectionState.Closed)
    24                 {
    25                     conn.Open();
    26                 }
    27                 try
    28                 {
    29                     cmd.Connection = conn;
    30 
    31                     cmd.ExecuteNonQuery();
    32                     var sqlParameter = cmd.Parameters["@result"] as SqlParameter;
    33                     result = sqlParameter != null ? sqlParameter.Value : 5;
    34                 }
    35                 catch ( Exception ex)
    36                 {
    37                     result = 0;
    38                 }
    39             finally
    40             {
    41                 session.Connection.Close();
    42             }
    43 
    44 
    45 
    46         }

    如上就是调用存储过程方法,最大的问题是硬编码了参数是通过参数来控制是返回哪一个值的,在得到结果后倒是可以在我的转换之前就先判断类型,以此来得到有返回值的那个参数,然后再赋值。大家有需要自行参考,以上代码可以用。

  • 相关阅读:
    Django项目总结: REST Framework 用户注册登录,权限控制,级联操作查询,节流控制自定义
    画皮卡丘
    软件测试 (实际输出与预期输出间的比较过程)
    软件测试方法
    Vue模板语法
    HTTP 与 HTTPS 的区别
    tomcat运行多个项目同一个端口与不同端口的设置
    springboot-WebMvcConfigurer配置拦截器/跨域/格式化/注册控制器
    Spring IOC(控制反转)思想笔记
    工程师最重要的能力是什么?
  • 原文地址:https://www.cnblogs.com/EncryptingLife/p/3952359.html
Copyright © 2011-2022 走看看