我试图在函数中保存SQL连接,以便我可以调用它,而不是每次都复制代码。来自这里的用户将其提交给我之前发布的一个问题。我正在尝试复制该过程,但我收到了错误:
您无法在空值表达式上调用方法
代码如下:
$server = "TEST"
$database = "Lookups"
$connection = New-Object System.Data.SqlClient.SqlConnection("Data Source=$server;Integrated Security=SSPI;Initial Catalog=$database;")
function Execute-SQL ($query, $connection) {
$connection.Open();
$command = new-object System.Data.SqlClient.SqlCommand($query, $connection);
$command.ExecuteNonQuery();
$connection.Close();
}
$query = "TRUNCATE TABLE [Lookups].dbo.[client_lookup]"
Execute-SQL $query, $connection
我甚至关闭了吗?提前道歉,但我似乎无法找到很多关于此的文章。
请查看完整错误:
> You cannot call a method on a null-valued expression. At line:6 char:1
> + $connection.Open();
> + ~~~~~~~~~~~~~~~~~~
> + CategoryInfo : InvalidOperation: (:) [], RuntimeException
> + FullyQualifiedErrorId : InvokeMethodOnNull You cannot call a method on a null-valued expression. At line:8 char:1
> + $connection.Close();
> + ~~~~~~~~~~~~~~~~~~~
> + CategoryInfo : InvalidOperation: (:) [], RuntimeException
> + FullyQualifiedErrorId : InvokeMethodOnNull
答案 0 :(得分:1)
问题是一个简单的语法错误。在Powershell中,参数用空格分隔,而不像许多其他语言那样用逗号分隔。
使用正确的语法,它将起作用,如下所示:
Execute-SQL $query $connection