使用ASP.Net插入MySQL时出错

时间:2017-06-04 12:12:42

标签: mysql asp.net

我是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();

请建议并谢谢

1 个答案:

答案 0 :(得分:0)

你应该用一个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端完成,然后你需要在DB中存储过程。

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 ;

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