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         }

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

  • 相关阅读:
    在windows下拆卸Linux就是这么俭朴
    打点Linux下永中Office和桌面殊效的冲突
    Banshee 0.11.4
    ubuntu8.0中文输入法
    RedFlag 6.0 硬盘安置我解
    阅读器和把持体系和用户的IQ
    初试Fedora,最后还是Xubuntu
    VMware中放置Ubuntu后鼠标滚轮标题问题办理
    GNOME 的文件经管器将片面支撑标签式阅读
    ATI显卡开启fedora9的3d后果的一些条记
  • 原文地址:https://www.cnblogs.com/EncryptingLife/p/3952359.html
Copyright © 2011-2022 走看看