我试图让我的SQL命令与PowerShell异步运行。要使用SqlCommand
类和BeginExecuteNonQuery
方法来实现此目的。据我所知,这个方法应该返回IAsyncResult
类。但是当我试图检查返回值时,我会看到System.Data.Common.DbAsyncResult
类。
请告诉我我做错了什么,或者我在哪里可以读到我的错误,我对编程很陌生。我的代码示例在
之下$connection = New-Object System.Data.SqlClient.SqlConnection
"addr=tcp:192.168.0.81,1433;Database=ArchiCredit;uid=sa;password=1;Async=true;"
$connection.Open()
$connection.State
$command = New-Object System.Data.SqlClient.SqlCommand ("update clients set fullname = 'ololo' where id = 15", $connection)
$state = $command.BeginExecuteNonQuery()
$state | gm
此脚本的结果是
PS C:\Users\ivanov> F:\AsyncSQL.ps1
Open
TypeName: System.Data.Common.DbAsyncResult
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
答案 0 :(得分:0)
这很正常。 IAsyncResult是界面。类实现了一个接口,并且任何使用该类的人都保证该类将具有该接口指定的所有属性/方法。在这种情况下,我相信DbAsyncResult
是一个内部类。也许这就是PowerShell没有向您展示属性的原因。奇怪。
尽管没有看到它的属性,你可以这样等待它:
$state = $command.BeginExecuteNonQuery()
while( -not $state.IsCompleted )
{
Start-Sleep -Milliseconds 100
}