我是 vb.net 的新手,我想检测用户输入的用户名是否已存在于 MySQL 数据库中,然后它将显示该用户名已存在于数据库中的错误。 这是我的代码:
document.addEventListener("visibilitychange", function(){
if (document.visibilityState === 'visible') {
canvas.style.transform = "translateZ(0)";
setTimeout(function(){canvas.style.transform = "none";}, 1000);
}
});
答案 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
定义为唯一键,那么我倾向于执行以下操作:
添加记录
uname
值 [txt_uname.Text] 在 tbl_user 中查找或计数 (*) 记录更改用户名
uname
值 [txt_uname.Text] 在 tbl_user 中查找或计数 (*) 记录您可以将逻辑封装在 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
应将结果写入数据表并进行查询。