【问题标题】:Chaining Sql commands in visual basic for MSAccess在 Visual Basic 中为 MS Access 链接 Sql 命令
【发布时间】:2019-11-26 21:44:18
【问题描述】:

使用 Visual Basic 和 SQL 将数据插入 MS Access 数据库.....我有以下代码,如果 @username 的值不存在于表中,它只会添加它。

cmd.CommandText = "INSERT INTO tbl (CustomerID) SELECT @username FROM(SELECT COUNT(*) FROM tbl) As v WHERE Not EXISTS(Select 1 FROM tbl as t WHERE t.CustomerID = @username)"

但是,我希望插入另一个不需要相同验证检查的值。这个值存储在@password

cmd.CommandText = "INSERT INTO tbl (CustomerID, Password) SELECT @username FROM(SELECT COUNT(*) FROM tbl) As v WHERE Not EXISTS(Select 1 FROM tbl as t WHERE t.CustomerID = @username VALUES (@username, @password)"

以上方法我都试过了,还是不行。

总之,我只想将@username 添加到数据库中,并将@password 添加到同一行中,但只有@username 通过检查。

编辑: 我试过cmd.CommandText = "INSERT INTO tbl (CustomerID, Password) SELECT @username, @password FROM (SELECT COUNT(*) FROM tbl) As v WHERE Not EXISTS(Select 1 FROM tbl as t WHERE t.CustomerID = @username)",但收到语法错误。

【问题讨论】:

  • 请不要破坏您的帖子。
  • OleDB 不使用命名参数。它将您的@name 转换为?,因此您的参数必须按照它们出现在 sql 字符串中的索引顺序排列。您的查询包含三个参数,但您只提供其中两个。

标签: sql vb.net ms-access


【解决方案1】:

您的 SQL 命令有错误:

..1 FROM tbl as t WHERE t.CustomerID = @username VALUES (@username, @password)"
`------------------------------------------------^

如果这条线路适合你。

cmd.CommandText = "INSERT INTO tbl (CustomerID) 
SELECT @username 
FROM
(
    SELECT 
        COUNT(*) 
    FROM tbl
) As v 
WHERE Not EXISTS(Select 1 FROM tbl as t WHERE t.CustomerID = @username)"

那么这条线也应该可以工作:

cmd.CommandText = "INSERT INTO tbl (CustomerID, password) 
SELECT 
    @username,
    @password
FROM
(
    SELECT 
        COUNT(*) 
    FROM tbl
) As v 
WHERE Not EXISTS(Select 1 FROM tbl as t WHERE t.CustomerID = @username)"

【讨论】:

  • @Bill435 您可能应该将其余代码添加到原始问题中。您是否正确添加了所有参数?
【解决方案2】:

这可能不是您正在寻找的解决方案,但根据需要,我会考虑如下所示。我正在考虑通过查找@username 并将@password 值添加到单独的SQL 行中来将其添加到表中。抱歉,如果我误解了某些东西,但是如果您可以绕过逻辑检查,为什么不添加第二行 sql 以将值添加到 @username = tbl.username 的表中。

类似: 更新表 SET [密码] = @密码 WHERE [用户名] = @用户名

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    相关资源
    最近更新 更多