我有一个Powershell脚本,其中将SQL Select加载到DataTable
中。
当我将查询设置为仅返回1行,然后执行DataTable.Rows.Count
后,它将打印0行。
当我将查询设置为返回2行,然后执行DataTable.Rows.Count
后,它将打印2行。
我可以看到
DataTable
中有0行的数据,因为我可以 在我的DataTable
上循环。因此它仍然会获取数据,只是打印0
那为什么我的伯爵说1行为0?
如果我用C#做一个简单的DataTable并添加1行。算1。
Powershell
function ExecuteSqlQuery ($Server,$DB,$user,$pw,$SQLQuery) {
$Datatable = New-Object System.Data.DataTable
$Datatable.Clear()
$Connection = New-Object System.Data.SQLClient.SQLConnection
$Connection.ConnectionString = "Server = $Server; Database = $DB; Integrated Security = False; User ID = $user; Password = $pw;Connection Timeout=0"
$Connection.Open()
$Command = New-Object System.Data.SQLClient.SQLCommand
$Command.Connection = $Connection
$Command.CommandTimeout = 0
$Command.CommandText = $SQLQuery
Write-Host $SQLQuery
Write-Host "Starting to read sql"
$Reader = $Command.ExecuteReader()
Write-Host "Read of SQL success"
$Datatable.Load($Reader)
Write-Host "Datatable loaded with data"
$Connection.Close()
return $Datatable
}
Write-Output $query
$resultsDataTable = New-Object System.Data.DataTable
$resultsDataTable = ExecuteSqlQuery -Server $SQLServer -DB $SQLDBName -user $uid -pw $pwd -SQLQuery $query
Write-Output ("Meta Table contains: " + $resultsDataTable.Rows.Count + " rows")
C#
static void Main()
{
// Get the DataTable.
DataTable table = GetTable();
int s =table.Rows.Count;
}
static DataTable GetTable()
{
// Here we create a DataTable with four columns.
DataTable table = new DataTable();
table.Columns.Add("Dosage",typeof(int));
table.Rows.Add(25);
return table;
}