gpt4 book ai didi

sql - Powershell 脚本中的 ExecuteReader()

转载 作者:行者123 更新时间:2023-12-04 11:04:22 25 4
gpt4 key购买 nike

我正在尝试从 powershell 脚本中的 SQL 表中读取数据。我可以在 reader 对象中看到数据,但是在使用 While (readerobject.read()){} 读取它时,它不会进入循环。

Powershell :

 $cmd = $sqlConn.CreateCommand()
$cmd.CommandText ="SELECT * from user"
$movedUserDetails = $cmd.ExecuteReader()
while ($movedUserDetails.Read())
{
"[0] : " + $movedUserDetails.GetValue(0)
}
$movedUserDetails.Close()

最佳答案

语法是正确的,但是一旦进入循环,您就不会对值执行任何操作。你会想以某种方式坚持下去。这是在 powershell 中运行一些基本 SQL 的示例,使用两种不同类型的命令 (Text/SP) 和两种不同的执行方法 (DataAdapter/DataReader)。每一个都应该可以正常工作。

# config
$svr = "serverName"
$db = "databaseName"

# connection
$sqlConnection = New-Object System.Data.SqlClient.SqlConnection
$sqlConnection.ConnectionString = "Server=$svr;Database=$db;Integrated Security=True"
$sqlConnection.Open()

# command A - text
$sqlCmd = New-Object System.Data.SqlClient.SqlCommand
$sqlCmd.Connection = $sqlConnection
$sqlCmd.CommandText = "SELECT name AS TABLE_NAME FROM sys.tables"

# command B - stored procedure
$sqlCmd = New-Object System.Data.SqlClient.SqlCommand
$sqlCmd.Connection = $sqlConnection
$sqlCmd.CommandText = "sys.sp_tables"
$sqlCmd.CommandType = [System.Data.CommandType]::StoredProcedure
$sqlCmd.Parameters.Add("@table_owner", "dbo")

# execute A - data reader
$reader = $sqlCmd.ExecuteReader()
$tables = @()
while ($reader.Read()) {
$tables += $reader["TABLE_NAME"]
}
$reader.Close()

# execute B - data adapter
$dataTable = New-Object System.Data.DataTable
$sqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$sqlAdapter.SelectCommand = $sqlCmd
$sqlAdapter.Fill($dataTable)
$sqlConnection.Close()

关于sql - Powershell 脚本中的 ExecuteReader(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30375519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com