如何停止PowerShell SqlCommand回显参数

蒂姆·迈尔斯(Tim Meers)

我有一些使用SqlCommand对象进行数据插入和查询的函数。但是一个函数(文件中的最后一个)似乎将(大多数)属性回显到输出中。有问题的功能:

function Add-DataStudentChangeEvent($person,
        $key,
        $currentValue,
        $newValue,
        $eventType){

    $cmdEvent=New-Object System.Data.SqlClient.SqlCommand
    $cmdEvent.Connection = $conn
    $cmdEvent.CommandTimeout = 600000

    $cmdEvent.CommandText = "INSERT INTO ChangeEvent
            (AttributeKey
            ,CurrentAttributeValue
            ,NewAttributeValue
            ,EventType
            ,EventDate
            ,CompletedStatus
            ,Person_Id)
        VALUES
            (@AttributeKey,
            @CurrentAttributeValue,
            @NewAttributeValue,
            @EventType,
            GETDATE(),
            0,
            @PersonId);" -F

    $cmdEvent.Parameters.AddWithValue("@AttributeKey", $key); 
    $cmdEvent.Parameters.AddWithValue("@CurrentAttributeValue", $current);
    $cmdEvent.Parameters.AddWithValue("@NewAttributeValue", $updateTo);
    $cmdEvent.Parameters.AddWithValue("@EventType", $eventType);
    $cmdEvent.Parameters.AddWithValue("@PersonId", $person);

    $cmdEvent.ExecuteNonQuery()
}

在另一个使用参数化查询的类似函数中,我发现-F在末尾添加会停止回显。我确实说了大多数参数。5个中只有4个实际显示。这是我得到的输出:

1
CompareInfo                     : None
XmlSchemaCollectionDatabase     : 
XmlSchemaCollectionOwningSchema : 
XmlSchemaCollectionName         : 
ForceColumnEncryption           : False
DbType                          : String
LocaleId                        : 0
ParameterName                   : @CurrentAttributeValue
Precision                       : 0
Scale                           : 0
SqlDbType                       : NVarChar
SqlValue                        : Null
UdtTypeName                     : 
TypeName                        : 
Value                           : 
Direction                       : Input
IsNullable                      : False
Offset                          : 0
Size                            : 0
SourceColumn                    : 
SourceColumnNullMapping         : False
SourceVersion                   : Current

CompareInfo                     : None
XmlSchemaCollectionDatabase     : 
XmlSchemaCollectionOwningSchema : 
XmlSchemaCollectionName         : 
ForceColumnEncryption           : False
DbType                          : String
LocaleId                        : 0
ParameterName                   : @NewAttributeValue
Precision                       : 0
Scale                           : 0
SqlDbType                       : NVarChar
SqlValue                        : 2007-11-15
UdtTypeName                     : 
TypeName                        : 
Value                           : 2007-11-15
Direction                       : Input
IsNullable                      : False
Offset                          : 0
Size                            : 10
SourceColumn                    : 
SourceColumnNullMapping         : False
SourceVersion                   : Current

CompareInfo                     : None
XmlSchemaCollectionDatabase     : 
XmlSchemaCollectionOwningSchema : 
XmlSchemaCollectionName         : 
ForceColumnEncryption           : False
DbType                          : Int32
LocaleId                        : 0
ParameterName                   : @EventType
Precision                       : 0
Scale                           : 0
SqlDbType                       : Int
SqlValue                        : 1
UdtTypeName                     : 
TypeName                        : 
Value                           : 1
Direction                       : Input
IsNullable                      : False
Offset                          : 0
Size                            : 0
SourceColumn                    : 
SourceColumnNullMapping         : False
SourceVersion                   : Current

CompareInfo                     : None
XmlSchemaCollectionDatabase     : 
XmlSchemaCollectionOwningSchema : 
XmlSchemaCollectionName         : 
ForceColumnEncryption           : False
DbType                          : Int32
LocaleId                        : 0
ParameterName                   : @PersonId
Precision                       : 0
Scale                           : 0
SqlDbType                       : Int
SqlValue                        : 72
UdtTypeName                     : 
TypeName                        : 
Value                           : 72
Direction                       : Input
IsNullable                      : False
Offset                          : 0
Size                            : 0
SourceColumn                    : 
SourceColumnNullMapping         : False
SourceVersion                   : Current

关于如何停止回声的任何想法?

詹姆斯·墨菲

您所看到的是函数的返回值。例如,SqlParameterCollection.AddWithValue()返回SqlParameter,然后SqlCommand.ExecuteNonQuery()返回int与C#不同,您未明确处理的任何值都将写入输出流。

有两种处理方法。第一种方法是将返回值分配给变量:

$param = $cmdEvent.Parameters.AddWithValue("@AttributeKey", $key)
$param = $cmdEvent.Parameters.AddWithValue("@CurrentAttributeValue", $current)
$param = $cmdEvent.Parameters.AddWithValue("@NewAttributeValue", $updateTo)
$param = $cmdEvent.Parameters.AddWithValue("@EventType", $eventType)
$param = $cmdEvent.Parameters.AddWithValue("@PersonId", $person)

$numRows = $cmdEvent.ExecuteNonQuery()

第二种方法是将输出通过管道传递到空流:

$cmdEvent.Parameters.AddWithValue("@AttributeKey", $key) | Out-Null 
$cmdEvent.Parameters.AddWithValue("@CurrentAttributeValue", $current) | Out-Null
$cmdEvent.Parameters.AddWithValue("@NewAttributeValue", $updateTo) | Out-Null
$cmdEvent.Parameters.AddWithValue("@EventType", $eventType) | Out-Null
$cmdEvent.Parameters.AddWithValue("@PersonId", $person) | Out-Null

$cmdEvent.ExecuteNonQuery() | Out-Null

我更喜欢第一种方法,因为您可能会遇到想要利用返回值的情况。但是,第二种方法更清楚地表明您的意图是您对返回值不感兴趣。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章