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 。所以之后你无法访问返回、输出参数的值。

  • 相关阅读:
    2. 获取access_token
    1. 钉钉可以做什么
    3.5 创建模型-关系
    3.5 创建模型 其它
    3.3 创建模型 阴影属性
    3.4 创建模型-并发标记
    Spark运行CDH6.3.2碰到的由于hive驱动引起的问题解决方法
    Spark中碰到需要转义的|分隔符填坑方法
    Spark2 Can't write dataframe to parquet hive table : HiveFileFormat`. It doesn't match the specified format `ParquetFileFormat`.
    Spark连接CDH平台thriftserver和kerberos访问不一致错误排查
  • 原文地址:https://www.cnblogs.com/GDLMO/p/1665187.html
Copyright © 2011-2022 走看看