我有以下PowerShell代码,它将新的数据行添加到MS Access数据库中(基于用户输入)并且工作正常。
Http
但是,我似乎无法更新已存在的数据库中的行。是否可以更新一行,而不是创建一个全新的行?
答案 0 :(得分:5)
$recordset.AddNew()
将新的空记录附加到记录集。要更新现有记录,您需要先导航到要修改的记录,然后更改该记录的值。
$recordset.Open($query, $ado, $cursor, $lock)
while ($recordset.Fields.Item('Account').Value -ne $AccName) {
$recordset.MoveNext()
}
$recordset.Fields.Item('Serial') = $CGBSerial
...
$recordset.Update()
$recordset.Close()
但是,您无法将MoveNext()
与静态光标一起使用,因此您需要将cursor type更改为adOpenForwardOnly
($cursor = 0
)。
或者您可以使用prepared statement:
$cn = New-Object -ComObject 'ADODB.Connection'
$cn.ConnectionString = "..."
$cn.Open()
$cmd = New-Object -ComObject 'ADODB.Command'
$cmd.CommandText = 'UPDATE [Sheet1] SET Serial=?, SAExpiry=?, ... WHERE Account=?'
$cmd.Parameters.Append($cmd.CreateParameter('@p1', 200, 1, 50, $CGBSerial))
$cmd.Parameters.Append($cmd.CreateParameter('@p2', 7, 1, $null, $SAEDate))
...
$cmd.Execute()
$cn.Close()