【问题标题】:error in java about SQLsyntax while query works correctly in MySQLjava中关于SQLsyntax的错误,而查询在MySQL中正常工作
【发布时间】:2013-12-03 10:56:05
【问题描述】:

在为商店创建一个程序时,该程序在一个 txt 文件中列出了他的分类,从 MySQL(phpMyAdmin) 的数据库中获取他的信息,我在运行文件时总是在 netbeans 中遇到同样的错误。 Netbeans 显示此错误:“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '.....' 附近使用正确的语法”。我的查询是正确的,我在 MySQL 中检查了一百多次,它总是提供正确的表。在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);我发现这非常不合逻辑,它也给出了一个错误。

有些人认为我可能有连接问题,但我的班级中有其他方法可以完美地与我的 connectionMethod 配合使用。

有什么建议吗?非常感谢你

【问题讨论】:

    标签: java mysql sql netbeans


    【解决方案1】:

    在 SQL 查询中,您没有在 WHERE 之前放置空格。

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

    【讨论】:

      【解决方案2】:

      Artikelnummer 和您的 WHERE 子句之间没有空格,请像这样更改您的查询并重试:

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

      【讨论】:

        猜你喜欢
        • 2015-06-03
        • 2016-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-16
        • 2012-04-07
        • 1970-01-01
        相关资源
        最近更新 更多