使用SqlDataAdapter和DataTable通过PowerShell在SQL Server上获取和更新

问题描述 投票:1回答:1

我试图使用PowerShell从SQL服务器获取System.Data.DataTable,编辑数据,并将其更新回SQL服务器,但我无法让它工作。下面的代码运行/执行但数据不会更改。

$sqlConnection = new-object System.Data.SqlClient.SqlConnection("Server=server,1234; Database=dingo; Trusted_Connection=True;")
$sqlConnection.open()

$sqlCommand = $sqlConnection.CreateCommand()
$sqlCommand.CommandText = "SELECT * FROM dbo.test"

$dt = new-object System.Data.DataTable
$adapter = new-object System.Data.SqlClient.SqlDataAdapter($sqlCommand)

$adapter.Fill($dt)

# edit the rows
$dt.Rows[0].BeginEdit()
$dt.Rows[0]["a"] = "nacho"
$dt.Rows[0].AcceptChanges()

# command builder
$cb = new-object system.data.sqlclient.sqlcommandbuilder($adapter)

$adapter.UpdateCommand = $cb.GetUpdateCommand()


$adapter.Update($dt)

$sqlConnection.Close()
sql-server powershell datatable sqldataadapter
1个回答
1
投票

你不应该在行上调用AcceptChange,而是需要调用EndEdit

当调用AcceptChanges时,它结束编辑但将行标记为Unchanged,因此它不会被DataAdapter处理,因为它被标记为未更改。

在调用AcceptChanges时,会隐式调用EndEdit方法来结束任何编辑。如果该行的RowStateAddedModified,则RowState变为Unchanged。如果RowStateDeleted,则排除。

© www.soinside.com 2019 - 2024. All rights reserved.