sql - 当我有多个结果时,为什么这个 powershell 代码只返回一个结果?
问题描述
我正在通过 powershell 运行查询。我知道通过 ssms 运行查询有多个结果。为什么变量在powershell中只有一个结果?
我使用了许多方法来执行此查询,我终于让它工作了,但无法获得查询的所有结果。
[string] $Server= "mochqdb01";
[string] $Database = "MoCApp.Models.Item+ItemDBContext";
[string] $SQLQuery= $("Select smEmail from Items where DateRequested >= dateadd(day,datediff(day,1,GETDATE()),0)");
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=$Server;Database=$Database;Integrated Security=True"
$SqlConnection.Open()
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SQLQuery
$SqlCmd.Connection = $SqlConnection
$dbname = $SqlCmd.ExecuteScalar()
$SqlConnection.Close()
Write-output "Database is " $dbname
输出:数据库是 Franziew@marketyyo.com
应该有多个结果。我应该保存到数组中吗?
我实际上想将结果保存为这种格式。
Send-ToEmail -email "js@marketyyo.com","mb@marketyyo.com";这可能吗?
解决方案
ExecuteScalar() 返回第一个结果集第一行的第一列。你需要ExecuteReader()。例如
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=$Server;Database=$Database;Integrated Security=True"
$SqlConnection.Open()
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SQLQuery
$SqlCmd.Connection = $SqlConnection
$rdr = $SqlCmd.ExecuteReader()
while ($rdr.Read())
{
$smMail = $rdr[0]
write-output "email is $smMail"
}
$rdr.Close()
$SqlConnection.Close()
推荐阅读
- reactjs - 如何从 Firebase 存储下载图像并将它们作为道具分配给 React 中的文档?
- go - 有没有办法检查读取缓冲区是否剩余?
- docker - 在 Alpine docker 映像中找不到 stdint.h
- c# - 如何从相对路径加载c#中的json文件?
- uilabel - 如何显示从图像中随机抽取的数字?
- jdbc - 将驱动程序 Vertica JDBC 导入 FlyWay
- python - 一行中的相同值未附加到二维 Python 列表
- javascript - 如何截取 div 并将值插入模型的属性 ASP .NET Core
- mysql - 使用 Excel 单元格中的值作为 SQL 查询中 WHERE 子句的条件
- java - 如何解决 Maven Invoker API 警告:Maven 将以交互模式执行,但没有配置输入流