现在我遇到了一个问题,即尝试将一些信息插入数据库会给我一个SQLException:General Error。我已经确定问题是我的字符串中有撇号。这是我的更新声明:
AniDB.updateTbl("UPDATE SeriesTbl SET SeriesSynopsis = '" + synop + "' WHERE SeriesID = " + sID);
SeriesSynopsis包含许多记录,所有记录都有不同的字符串。让我们说,为了争论,一个记录是“汤姆不喜欢猫”,另一个记录是“蒂莫西对猫不太关心”。撇号处于不同的位置,并且干扰了我的SQL语句。关于如何解决这个问题的任何想法?
答案 0 :(得分:2)
试
AniDB.updateTbl("UPDATE SeriesTbl SET SeriesSynopsis = '" + synop.replace("'", "''") + "' WHERE SeriesID = " + sID);
您可以使用2引号转义引号。
答案 1 :(得分:1)
请阅读此页:https://www.owasp.org/index.php/Preventing_SQL_Injection_in_Java
除了解决您的直接问题之外,学习使用预准备语句将使您的代码更不容易受到攻击,可以简化代码并使其更具可移植性并可以提高数据库的效率。我认为SQL注入问题是紧急的...非常值得花时间。