zoukankan      html  css  js  c++  java
  • 在DNN中使用SqlDataReader ExecuteReader(string connectionString, string spName, params object[] parameterValues)始终无法获得返回值

    关于SqlHelper.ExecuteNonQuery的返回值问题

    SqlHelper.ExecuteNonQuerystring的两个构造函数在返回值方面有差异

    如果执行SqlHelper.ExecuteNonQuerystring(connectionString, string spName, params object[] parameterValues)则始终无法获得返回值

    如果执行SqlHelper.ExecuteNonQuery(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)则可以获得返回值

    Ref: http://blog.joycode.com/ghj/archive/2004/04/12/19015.aspx

    SqlHelper使用中需要注意的一点(带输出、返回参数的存储过程):

    SqlHelper中,在使用存储过程时候,如果你的存储过程参数中有输出、返回参数。有些函数是无法使用的。具体来说就是:

             SQLHelp 里面,如果传入的参数中有 params SqlParameter[] commandParameters 的那几个,是没问题的,有问题的是传入参数中有:params object[] parameterValues 的那几个:

    比如:
    public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)  这个没有提到的问题。

    这个
    public static int ExecuteNonQuery(string connectionString, string spName, params object[] parameterValues)
    有提到的问题。

    下面是有这些问题的函数列表:

    public static int ExecuteNonQuery(string connectionString, string spName, params object[] parameterValues)
    public static int ExecuteNonQuery(SqlConnection connection, string spName, params object[] parameterValues)
    public static int ExecuteNonQuery(SqlTransaction transaction, string spName, params object[] parameterValues)

    public static DataSet ExecuteDataset(string connectionString, string spName, params object[] parameterValues)
    public static DataSet ExecuteDataset(SqlConnection connection, string spName, params object[] parameterValues)
    public static DataSet ExecuteDataset(SqlTransaction transaction, string spName, params object[] parameterValues)

    public static SqlDataReader ExecuteReader(string connectionString, string spName, params object[] parameterValues)
    public static SqlDataReader ExecuteReader(SqlConnection connection, string spName, params object[] parameterValues)
    public static SqlDataReader ExecuteReader(SqlTransaction transaction, string spName, params object[] parameterValues)

    public static object ExecuteScalar(string connectionString, string spName, params object[] parameterValues)
    public static object ExecuteScalar(SqlConnection connection, string spName, params object[] parameterValues)
    public static object ExecuteScalar(SqlTransaction transaction, string spName, params object[] parameterValues)

    public static XmlReader ExecuteXmlReader(SqlConnection connection, string spName, params object[] parameterValues)
    public static XmlReader ExecuteXmlReader(SqlTransaction transaction, string spName, params object[] parameterValues)


    public static void FillDataset(string connectionString, string spName,
       DataSet dataSet, string[] tableNames,
       params object[] parameterValues)
    public static void FillDataset(SqlConnection connection, string spName,
       DataSet dataSet, string[] tableNames,
       params object[] parameterValues)
    public static void FillDataset(SqlTransaction transaction, string spName,
       DataSet dataSet, string[] tableNames,
       params object[] parameterValues)

    这里的类似函数的特征就是参数中,其中一个参数是:
    params object[] parameterValues

    如果你非要使用这些函数,你就会看到,你接收不到返回的存储过程输出、返回参数。

    原因:
          在这些函数的内部实现中,他把object[] parameterValues 转换为 SqlParameter[] commandParameters,而commandParameters 是个局部变量,在离开这个函数后,这些就无法再访问了。返回前,SqlHelper 并没有把commandParameters 的内容转赋给parameterValues 。所以之后你无法访问返回、输出参数的值。

  • 相关阅读:
    设计模式
    【C/C++多线程编程之六】pthread相互排斥量
    J2EE的13个规范之(三) Servlet简单介绍
    .NET实现单点登录研究过程总结--【SSO】
    hdu4081 次小生成树变形
    eclipse代码提示框背景色改动
    Linux SO_KEEPALIVE属性,心跳
    [实战]MVC5+EF6+MySql企业网盘实战(20)——Bootstrap Paginator
    [工具]图片等比例压缩工具
    [工具类]视频音频格式转换
  • 原文地址:https://www.cnblogs.com/GDLMO/p/1665187.html
Copyright © 2011-2022 走看看