Powershell 使用 WHERE 子句插入 MS Access
Posted
技术标签:
【中文标题】Powershell 使用 WHERE 子句插入 MS Access【英文标题】:Powershell insert into MS Access with WHERE clause 【发布时间】:2019-07-08 10:52:34 【问题描述】:尝试根据在带有 WHERE 子句的 powershell 表单中输入的值将值插入 MS Access DB。我收到一个简单的错误,但很难解决(“SQL 语句末尾缺少分号 (;)”)
这是我的基本代码;
$query = "INSERT INTO SignIns ([DateTimeOUT], [SignedOut]) VALUES ('$($info.F1)','$($info.F2)') FROM $Info WHERE SignIns.Surname = '$($Info.F3)'"
$cmd = $conn.CreateCommand()
$cmd.CommandText = $query
$result = $cmd.ExecuteNonQuery()
$conn.Close()
我已经修改为在我认为可以解决的所有地方添加分号,但没有运气,仍然返回相同的错误(SQL 语句末尾缺少分号);
$query = "INSERT INTO SignIns ([DateTimeOUT], [SignedOut]) VALUES ('$($info.F1)','$($info.F2)') FROM $Info WHERE SignIns.Surname = '$($Info.F3);';";
$cmd = $conn.CreateCommand()
$cmd.CommandText = $query;
$result = $cmd.ExecuteNonQuery();
$conn.Close()
(作为参考,我在 WHERE 子句的末尾添加了一个分号,在 $Query 变量的末尾,并在 $cmd.commandtext 变量中执行时尝试附加到 $query 的末尾, 也位于 $result 变量的末尾。
我希望该语句正常执行并使用给定值进行更新。在 Access DB 中进行测试很困难,因为我无法从 DB 中引用我的 PS 表格。非常感谢任何帮助,
谢谢。
【问题讨论】:
【参考方案1】:更新:修改对 UPDATE 的查询现在让我可以按照简单的逻辑使用 WHERE 语句“插入”值。
$conn.Open()
$query = "UPDATE SignIns SET DateTimeOUT = '$($info.F1)' WHERE SignIns.Surname = '$($Info.F3)'";
$cmd = $conn.CreateCommand()
$cmd.CommandText = $query;
$result = $cmd.ExecuteNonQuery();
$query = "UPDATE SignIns SET SignedOut = '$($info.F2)' WHERE SignIns.Surname = '$($Info.F3)'";
$cmd = $conn.CreateCommand()
$cmd.CommandText = $query;
$result = $cmd.ExecuteNonQuery();
$conn.Close()
这不是我在向表中输入新值时通常使用的方法,但结果相同。我认为没有任何影响。它可能将更新作为“从 NULL 更新到 VALUE”,而不是从源插入到目的地(哪里)
【讨论】:
如果在 PowerShell 中运行$info.GetType()
和 $info.Count
会得到什么?您当然应该能够为多列插入值。但是,您似乎无法一次插入多行(如您链接到的问题中所述)。 FROM 位 (FROM $Info
) 似乎也有点奇怪。
是的,我认为,我认为语法遵循目标/源格式,所以我认为我必须从源中指定我的更新值只是为了语法目的。无论如何我现在已经可以工作了。我将查询更改为 UPDATE 并且很有效,现在将发布答案并关闭。感谢您的输入,将检查 $Info.GetType() / $Info.Count 因为错误让我感到困惑(如果我不使用 WHERE 子句,我可以插入没有问题.. 我添加进去后,错误开始)以上是关于Powershell 使用 WHERE 子句插入 MS Access的主要内容,如果未能解决你的问题,请参考以下文章