0

テキスト ファイルを使用してテーブルを更新する必要があります。現在、Get-Contenttxt ファイルから実行してから SQL 更新クエリを実行すると、コードは正常に動作しますが、データが小さい場合に限られます。テキストのサイズが長すぎるか、特殊文字が含まれている場合、次のようなエラーがスローされます。

"0" 個の引数を指定して "ExecuteReader" を呼び出し中に例外が発生しました: "構文が正しくありません
')</td><td style=\"border:1px solid #cccccc\">#fieldValueEmpty($issue.getCustom
FieldValue($componentTypeCf),'."
C:\Users\d-mansings\Desktop\Scripted Field Configuration\Script\Prod_UpdateS
cript.ps1:78 文字:37
+ $Reader = $Command.ExecuteReader <<<< ()
    + CategoryInfo : NotSpecified: (:) []、MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

以下は私が使用しているコードです:

Function DatabaseQueries(){
    #To connect to the SQL database
    $Connection = New-Object System.Data.SQLClient.SQLConnection
    $Connection.ConnectionString = "Server=$IPSource ; Database=$DBNameSource ; User ID=$UserIDSource ; Password=$LoginPwdSource;"
    $Connection.Open()

    #Query to get the ID of the stored script field from propertyentry 
    $Command1 = New-Object System.Data.SQLClient.SQLCommand
    $Command1.Connection = $Connection
    $Command1.CommandText = "SELECT [ID]    FROM [dbo].[propertyentry] WHERE [PROPERTY_KEY]='com.onresolve.jira.groovy.groovyrunner:customfields' "
    $Reader = $Command1.ExecuteReader() 
    while ($Reader.Read()) {
        $ID = $Reader.GetValue($1)
    }

    #To get the updated script file
    $ScriptDir = $ParentDir + '\Script.txt'
    $ScriptData = Get-Content "$ScriptDir"
    $Connection.Close()

    #Query to update the Script in JIRA database 
    $Connection.Open()
    $Command = New-Object System.Data.SQLClient.SQLCommand
    $Command.Connection = $Connection
    $Command.CommandText = @"
    Update [dbo].[propertytext] set [propertyvalue] ='$ScriptData' Where ID=$ID
"@
    $Reader = $Command.ExecuteReader()

    $Connection.Close()
}
4

2 に答える 2

0

返信ありがとうございます。単一の逆コンマの間で混乱していたため、置換関数を使用するだけでクエリを実行する方法を見つけました

select REPLACE(Cast(propertyvalue AS varchar(Max)), '''', '''''') FROM [dbo].[propertytext] WHERE ID=$ID
于 2016-07-18T06:12:26.963 に答える