1
매개 변수화 된 쿼리 아래예외 : "내가 API에서 PowerShell을 출력에서 MS SQL 서버 2016에 데이터를 삽입하는 ADO 연결을 사용하고
내 스크립트. :
$conn = New-Object System.Data.SqlClient.SqlConnection("Data Source=XYZ; Initial Catalog=Z; Integrated Security=SSPI")
$conn.Open()
$cmd = $conn.CreateCommand()
$JSONResult |Select id,surname,managingDeanery
foreach($obj in $JSONResult) {
$Command = New-Object System.Data.SQLClient.SQLCommand
$Command.Connection = $dbConnection
$cmd.CommandText = "INSERT Client (id,surname,managingDeanery) VALUES (@id,@surname,@managingDeanery)"
$cmd.Parameters.AddWithValue("@id",$obj.id);
$cmd.Parameters.AddWithValue("@surname",$obj.surname);
$cmd.Parameters.AddWithValue("@managingDeanery",$obj.managingDeanery);
$cmd.ExecuteNonQuery()
$cmd.Parameters.clear();
}
$conn.Close()
내가 오류는 다음과 같습니다
:Exception calling "ExecuteNonQuery" with "0" argument(s): "The parameterized query '(@id int,@surname nvarchar(9),@managingDeanery nvarchar(4000))IN'
expects the parameter '@managingDeanery', which was not supplied."
At line:30 char:5
+ $cmd.ExecuteNonQuery()
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [],
MethodInvocationException
+ FullyQualifiedErrorId : SqlException
내가 사용 시도 10
그러나 이것은 모든 빈 필드와 비어 있지 않은 필드를 managingDeanery
열의 $obj.DBNull.Value
으로 잘못 설정합니다. 열의 모든 데이터가 비어있는 것은 아닙니다.
매개 변수 값을 따옴표로 묶고 있습니다 당신의 두번째 작업 예제에서. $ obj.surname 주위에 따옴표를 사용하려고 했습니까? – Michael
_ $ Command_ 또는 _ $ cmd_ 여기에 올바른 것은 무엇입니까? – Steve
AddWithValue를 사용하지 마십시오. 대신 적절한 SQL 형식이 지정된 Add 메서드를 사용하십시오 (https://msdn.microsoft.com/en-us/library/wbys3e9s.aspx). –