使用SqlDataAdapter和DataTable与PowerShell连接SQL Server并进行数据的获取和更新

4
我正在尝试使用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()
1个回答

3

不应该在行上调用 AcceptChange 方法,而是需要调用 EndEdit 方法。

调用 AcceptChanges 方法会结束编辑,但是将行标记为 Unchanged,因此由于被标记为未更改状态,它不会被 DataAdapter 处理。

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


搞定了。谢谢! - IMTheNachoMan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接