【发布时间】:2019-10-24 00:26:17
【问题描述】:
我正在使用 VB.NET 和 MS Access 数据库中的 Windows 窗体。我需要检查用户是否已存在于我的数据库中,并相应地采取进一步措施。搜索了一段时间后,我遇到了这个解决方案。
INSERT INTO usertabble (user_name , pass_word)
SELECT 'username', 'password' FROM DUAL
WHERE NOT EXISTS (SELECT * FROM usertable
WHERE user_name='username' AND pass_word='password' LIMIT 1)
但问题是 DUAL 关键字。在该关键字之后查询显示语法错误。我了解到 DUAL 是 oracle 数据库独有的。 所以我找到了一个 MS Access 的解决方法,它在同一个数据库中创建名为 DUAL 的表。但这也行不通。
我的方法有什么问题吗?还是根本不可行?还有其他选择吗?
【问题讨论】:
-
为什么要
pass_word='username'?如果在 Access 表中将 user_name 和 pass_word 定义为复合唯一索引,则使用INSERT INTO usertabble(user_name, pass_word) VALUES('username', 'password')语法将不会插入重复记录。 -
我的错。现已编辑。
-
此stackoverflow.com/questions/28282127/… 在从另一个表中提取值但无法使用参数时有效。
-
LIMIT在 Access SQL 中不受支持。 -
@June7 我从您提供的链接中阅读了该答案。但那里有可用的桌子,但这里没有。 DUAL 字面上是用于访问 sql 的假想表。我确实尝试过制作名为 DUAL 的表,其中只有 1 行。但这也行不通。