如果不存在,则查询会导致“SQL语法错误”

时间:2014-10-23 19:36:20

标签: sql vb.net

我想在SQL中插入一行(在Visual Basic中)并收到如下内容:“错误:你的SQL语法中有一个errin,在IF NOT NOT EXISTS附近......在第1行”

代码如下:

...
Try

    query = "IF NOT EXISTS (Select Movie_Name from MovieDB where Movie_Name=" & placeholder & ") INSERT INTO MovieDB (Movie_Name) VALUES ('" & placeholder & "')"

    'PREPARE CONNECTION
    MySQLCmd = New MySqlCommand(query, dbConnection)

    'OPEN DB 
    dbConnection.Open()

    'EXECUTE QUERY
    MySQLCmd.ExecuteNonQuery()

    'CLOSE DB
    dbConnection.Close()

Catch ex As Exception
    ...

我真的不知道了。一些想法?

2 个答案:

答案 0 :(得分:1)

至少你需要在第一个字符串周围加上单引号:

                                                                      --V                 --V
query = "IF NOT EXISTS (Select Movie_Name from MovieDB where Movie_Name='" & placeholder & "'); INSERT INTO MovieDB (Movie_Name) VALUES ('" & placeholder & "')"

@Cameron敏锐地注意到,你还需要在EXISTS函数和INSERT命令之间加一个分号

但是你应该考虑使用参数而不是连接SQL - 它不仅可以删除分隔字符串的需要,而且它可以防止SQL注入,并且如果字符串包含撇号,则可以避免语法错误。

答案 1 :(得分:0)

据我所知"如果不是EXISTS INSERT"没有有效的MySQL语法。这应该有效:

query = "INSERT INTO MovieDB (Movie_Name) VALUES ('" & placeholder & "') ON DUPLICATE KEY UPDATE Movie_Name = Movie_Name";

这会尝试插入新的电影名称,如果失败,它几乎什么都不做。 (为此,Movie_Name必须有唯一的索引。)