我试图使用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()
你不应该在行上调用AcceptChange
,而是需要调用EndEdit
。
当调用AcceptChanges
时,它结束编辑但将行标记为Unchanged
,因此它不会被DataAdapter
处理,因为它被标记为未更改。
在调用
AcceptChanges
时,会隐式调用EndEdit
方法来结束任何编辑。如果该行的RowState
是Added
或Modified
,则RowState
变为Unchanged
。如果RowState
是Deleted
,则排除。