当查询在MySQL中正常工作时,java中关于SQLsyntax的错误

当查询在MySQL中正常工作时,java中关于SQLsyntax的错误,java,mysql,sql,netbeans,Java,Mysql,Sql,Netbeans,当为一个商店创建一个程序,在一个txt文件中列出他的产品组合,从MySQL(phpMyAdmin)的数据库中获取他的信息时,我总是在运行该文件时在netbeans中遇到同样的错误。Netbeans显示此错误:“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解第1行“……”附近使用的正确语法”。我的查询是正确的,我在MySQL中检查了100多次,它总是给出正确的表。同样在java中,我已经多次检查了我的代码 我在谷歌上搜索了一下,找到了其他一些有类似问题的人,但这些建议的解

当为一个商店创建一个程序,在一个txt文件中列出他的产品组合,从MySQL(phpMyAdmin)的数据库中获取他的信息时,我总是在运行该文件时在netbeans中遇到同样的错误。Netbeans显示此错误:“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解第1行“……”附近使用的正确语法”。我的查询是正确的,我在MySQL中检查了100多次,它总是给出正确的表。同样在java中,我已经多次检查了我的代码

我在谷歌上搜索了一下,找到了其他一些有类似问题的人,但这些建议的解决方案都不适用于我的项目。我输入了额外的引号(因为我忘记了)。这是我的密码:

String Lijst = "";

    Connection con = null;
    try
    {
        con = getConnection();
        Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                             ResultSet.CONCUR_READ_ONLY);

        String sql = "SELECT  ArtikelWinkel.Artikelnummer, Artikel.Naam, Artikel.Prijs, Artikel.GekregenPunten, ArtikelMetBonus.MinimumAantalGekocht, ArtikelMetBonus.BonuspuntenVerdiend, PuntenInwisselbaarArtikel.PrijsInPunten, PuntenInwisselbaarArtikel.MinimumGeldbedrag "
                + "FROM ArtikelWinkel LEFT OUTER JOIN Artikel ON Artikel.Artikelnummer=ArtikelWinkel.Artikelnummer  "
                + "LEFT OUTER JOIN ArtikelMetBonus ON ArtikelWinkel.Artikelnummer=ArtikelMetBonus.Artikelnummer "
                + "LEFT OUTER JOIN PuntenInwisselbaarArtikel ON ArtikelWinkel.Artikelnummer=PuntenInwisselbaarArtikel.Artikelnummer"
                + "WHERE ArtikelWinkel.Naam='" + naamWinkel + "'";
        ResultSet srs = stmt.executeQuery(sql); 
        Lijst = "Naam Winkel   -   Artikel  -  Artikelnummer     -   Prijs  -   Gekregen punten per artikel -   "
                + "min. # kopen om bonus te verdienen   -   # bonuspunten verdiend  -   min. bedrag kopen om prijs in punten  \n";

        while(srs.next())
        {
            Lijst +="\t\t"+ naamWinkel +"   -   "+srs.getString("Artikel.Naam")+"   -   "
                    +srs.getString("ArtikelWinkel.Artikelnummer") +"   -   "+srs.getString("Artikel.Prijs") 
                    + "   -   "+srs.getString("Artikel.GekregenPunten") +"  -   " +srs.getString("ArtikelMetBonus.MinimumAantalGekocht") +
                    "   -   "+srs.getString("ArtikelMetBonus.BonuspuntenVerdiend") + "  -   " +srs.getString("PuntenInwisselbaarArtikel.MinimumGeldbedrag")+ "\n";
        }
        con.close();
他们也是建议te在语句中括号之间释放sql的人:ResultSet srs=stmt.executeQuery(sql);我发现这很不符合逻辑,而且它也给出了一个错误

有些人认为我可能有连接问题,但我班上还有其他方法,它们与我的连接方法完美配合


有什么建议吗?非常感谢

在SQL查询中,您没有在
WHERE
前面加空格

String sql = "SELECT..  .."
            ...PuntenInwisselbaarArtikel.Artikelnummer"
 + "WHERE ArtikelWinkel.Naam='" + naamWinkel + "'";   |_ put space here.

Artikelnummer
和您的
WHERE
子句之间没有空格,请按如下方式更改您的查询,然后重试:

+ "LEFT OUTER JOIN PuntenInwisselbaarArtikel ON ArtikelWinkel.Artikelnummer=PuntenInwisselbaarArtikel.Artikelnummer"
+ " WHERE ArtikelWinkel.Naam='" + naamWinkel + "'";