如何检查记录是否已存在于数据库中

时间:2021-03-24 08:56:41

标签: vb.net

我是 vb.net 的新手,我想检测用户输入的用户名是否已存在于 MySQL 数据库中,然后它将显示该用户名已存在于数据库中的错误。 这是我的代码:

document.addEventListener("visibilitychange", function(){
    if (document.visibilityState === 'visible') {
        canvas.style.transform = "translateZ(0)";
        setTimeout(function(){canvas.style.transform = "none";}, 1000);
    }
});

1 个答案:

答案 0 :(得分:0)

这实际上更像是一个 MySQL 问题,但在这里。

您的声明:

Dim qadd As String = "INSERT INTO tbl_user 
    (uname, pword, ulvl) 
    VALUES (
        '" & txt_uname.Text & "' , 
        '" & txt_pword1.Text & "' , 
        '" & txt_pword2.Text & "'
          ) 
   ON DUPLICATE KEY UPDATE uname = ' " & txt_uname.Text & " '"

没有告诉我您使用什么 KEY 来确定 (uname, pword, ulvl) 是否会创建重复记录。 此外,我不确定您是要添加新记录还是更新现有记录。 尝试在单个语句中同时执行这两项操作可能会很困难。

但分解它们更容易。

假设您将 uname 定义为唯一键,那么我倾向于执行以下操作:

添加记录

  1. 根据您的 uname 值 [txt_uname.Text] 在 tbl_user 中查找或计数 (*) 记录
  2. 测试结果或者
  • a) WHERE COUNT(*) = 0 执行INSERT 语句(没有 ON Duplicate KEY)
  • b) WHERE COUNT(*) > 0 抛出错误消息“用户名已存在”

更改用户名

  1. 根据您的 uname 值 [txt_uname.Text] 在 tbl_user 中查找或计数 (*) 记录
  2. 测试结果或者
  • a) WHERE COUNT(*) = 0 执行UPDATE 语句
  • b) 哪里 COUNT(*) > 0 抛出您的错误消息“用户名已存在”

您可以将逻辑封装在 2 个存储过程中,并在需要添加或更新记录时在单个语句中调用它们。

要添加记录,您存储的程序可能如下所示:

    DELIMITER $$

CREATE
    /*[DEFINER = { user | CURRENT_USER }]*/
    PROCEDURE `sp_addnewuser`(in_uname VARCHAR(100), in_password VARCHAR(100))
    /*LANGUAGE SQL
    | [NOT] DETERMINISTIC
    | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
    | SQL SECURITY { DEFINER | INVOKER }
    | COMMENT 'string'*/
    BEGIN

/*
Create a variable to capture a count of username
And to test if an insert was successful
*/
SET @user_count = 0;

SELECT COUNT(*) INTO @user_count FROM `tbl_user` WHERE `uname` = in_uname;

IF @user_count = 0 THEN 
   INSERT INTO `tbl_user` (uname, pword) VALUES (in_uname, in_password) ;
   -- 
   -- Check that we have a new record for this uname value
   SELECT COUNT(*) INTO @user_count FROM `tbl_user` WHERE `uname` = in_uname;
   IF @user_count = 0 THEN
    SELECT "ERROR" AS `result`, "Failed to insert a new reord" AS `message`;
   ELSE
    SELECT "OK" AS `result`, "" AS `message`;
   END IF;
   
   
ELSE
   SELECT "EXISTING" AS `result`, "This username already exists" AS `message`;
 
END IF;
    END$$

DELIMITER ;

对您的 MySQL 数据库运行上述语句并按如下方式调用它:

CALL sp_addnewuser(txt_uname.Text, txt_pword1.Text); 例如:

CALL sp_addnewuser("user0", "user0");
-- ------  ---------
-- result  message  
-- ------  ---------
-- OK   
    
    
CALL sp_addnewuser("user0", "user0");        
-- result    message                       
-- --------  ------------------------------
-- EXISTING  This username already exists  

应将结果写入数据表并进行查询。