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

时间:2017-11-24 07:24:50

标签: sql-server powershell datatable sqldataadapter

我正在尝试使用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 个答案:

答案 0 :(得分:1)

您不应该在该行上致电AcceptChange,而是需要致电EndEdit

当致电AcceptChanges时,它会结束编辑,但会将该行标记为Unchanged,因此DataAdapter不会对其进行处理,因为它已被标记为未更改。

  

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