我正在尝试使用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()
答案 0 :(得分:1)
您不应该在该行上致电AcceptChange
,而是需要致电EndEdit
。
当致电AcceptChanges
时,它会结束编辑,但会将该行标记为Unchanged
,因此DataAdapter
不会对其进行处理,因为它已被标记为未更改。
调用
AcceptChanges
时,会隐式调用EndEdit
方法 结束任何编辑。如果该行的RowState
为Added
或Modified
,RowState
变为Unchanged
。如果RowState
为Deleted
,则为该行 被删除了。