我想在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
...
我真的不知道了。一些想法?
答案 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必须有唯一的索引。)