gpt4 book ai didi

mysql - 使用 ASP.Net 插入 MySQL 时出错

转载 作者:行者123 更新时间:2023-11-30 21:58:10 25 4
gpt4 key购买 nike

我是 MySQL 的新手,我试图在插入记录之前检查用户是否存在于数据库中,但我收到此错误 1064,SQL 语法错误。MySQL语句

IF (SELECT count(*) FROM tvstream.t_users WHERE fb_id=`123456`)=0 THEN 
Begin
INSERT INTO `tvstream`.`t_users` (`fb_id` ,`user_name` ,`email` ,`gender`)
Values (`123456`,`Daina`,`Daina@gmail.com`,`Female`)
End

ASP 代码

        StringBuilder SQL_Add = new StringBuilder("IF (SELECT count(*) FROM tvstream.t_users WHERE fb_id=`" + fb_id +"`)=0 THEN ");
SQL_Add.Append("Begin ");
SQL_Add.Append("INSERT INTO `tvstream`.`t_users` (`fb_id` ,`user_name` ,`email` ,`gender`)");
SQL_Add.Append(" Values (`" + fb_id + "`,`" + user_name + "`,`" + email + "`,`" + gender + "`)");
SQL_Add.Append(" End");

Response.Write(SQL_Add.ToString());
MySqlConnection m_cnn = new MySqlConnection(myConnection);

m_cnn.Open();
MySqlCommand cmd = new MySqlCommand(SQL_Add.ToString());
cmd.Connection = m_cnn;
cmd.ExecuteNonQuery();

请多多指教,谢谢

最佳答案

您应该创建一个 sql 查询来检查用户是否存在,另一个用于插入新用户。

检查:

SELECT count(*) FROM tvstream.t_users WHERE fb_id=`123456`

插入:

  INSERT INTO `tvstream`.`t_users` (`fb_id` ,`user_name` ,`email` ,`gender`) 
Values (`123456`,`Daina`,`Daina@gmail.com`,`Female`)

基本上你应该运行第一个查询,检查结果,然后执行插入。

如果您真的需要完全通过 SQL 端完成,那么您将需要在数据库中存储一个过程。

DELIMITER //

CREATE FUNCTION InsertUnique(fb_id VARCHAR(20), user_name VARCHAR(30), email VARCHAR(40), gender VARCHAR(10))
RETURNS INT

BEGIN
DECLARE s INT;

IF (SELECT count(*) FROM tvstream.t_users WHERE fb_id=`123456`)=0 THEN SET s = 1;
ELSE SET s = 0;
END IF;

IF s = 0 THEN
INSERT INTO `tvstream`.`t_users` (`fb_id` ,`user_name` ,`email` ,`gender`)
Values (fb_id,user_name,email,gender)
END IF;

RETURN s;
END //

DELIMITER ;

我没有检查语法,它可能需要修复。

关于mysql - 使用 ASP.Net 插入 MySQL 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44353952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com