2010-02-15 9 views
1

Je le code dans PowerShell, qui exécute la requête SQL pour la table UPDATE:Comment passer le paramètre dans la requête SQL de PowerShell

$Connection=new-object data.sqlclient.sqlconnection "server=server;database=mydb;trusted_connection=true;" 
$Connection.open() 

For($i = 0; $i -le $ActID.Length; $i ++){ 

$cmd = New-Object System.Data.SqlClient.SqlCommand 
$cmd.Connection = $Connection 
$cmd.CommandText = 
" 
update Table 
set Note = @PATH 
" 
$cmd.Parameters.Add("@PATH", $ActID[$i].Values) | Out-Null 

$cmd.ExecuteNonQuery() 

} 

J'essaie de mettre à jour la table avec la variable définie dans cette chaîne:

$cmd.Parameters.Add("@PATH", $ActID[$i].Values) | Out-Null 

Mais lorsque je tente d'exécuter le script, le journal d'erreur indique qu'il n'y a pas de valeur passée en $ ActID [$ i]

y at-il d'autres méthodes pour passer des paramètres (variables) dans les requêtes powershell?

Répondre

1

Quelle pourrait être l'erreur:

$i -le $ActID.Length; 

il devrait probablement

$i -lt $ActID.Length; 

Vous pouvez également utiliser la tuyauterie qui simplifie le code:

$actId | % { ..... $cmd.Parameters.Add("@PATH", $_.Values) | Out-Null .... } 

En outre la propriété que vous utilisez est Values - est-ce vraiment ce que tu voulais? Les valeurs ressemblent à une collection de quelque chose. Peut-être que vous vouliez utiliser une seule valeur.

+1

@Zshava - attention aussi vous n'avez pas une clause WHERE sur cette requête - je ne sais pas si c'était votre intention ou non ... – dugas

+0

@thedugas - bon point. – stej

+0

@thedugas - c'était mon intention, ma vraie requête est plus complexe mais elle n'est pas importante dans cette requête –

Questions connexes