2016-06-12 11 views
-1

プロジェクトservletjspを作成します。私はデータベースphpmyadminを使用しています。私はデータベースからの製品を表示する構文エラーに出会った。 Eclipse EEコンソールで次のエラーを返しました。問題は解決しませんでした。どんな助けもありがとう。サーブレット、JspプロジェクトMySQL構文エラー

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an 
error in your SQL syntax; check the manual that corresponds to your 
MySQL server version for the right syntax to use near 'order 
(id,idUser,order,total) values (default,'1','flower','83.8883')' at 
line 1 

サーブレットクラス:

protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
      throws ServletException, IOException { 
     // TODO Auto-generated method stub 


     String idUser = req.getParameter("idUser"); 
     System.out.println(idUser); 
     String order = req.getParameter("order"); 
     System.out.println(order); 
     String total = req.getParameter("total"); 
     System.out.println(total); 

     try { 

      Class.forName("com.mysql.jdbc.Driver"); 
      Connection cnx = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/shop","root",""); 
      PreparedStatement pr = (PreparedStatement) cnx.prepareStatement(
        "insert into order (id,idUser,order,total) values (default,?,?,?)" 
        ); 

       pr.setString(1,idUser); 
       pr.setString(2,order); 
       pr.setString(3, total); 



       pr.executeUpdate(); 
       pr.close(); 

       resp.sendRedirect("Home"); 


     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
+1

解雇されている実際のクエリを投稿してください – Nikhil

+1

投稿[SSCCE](http://sscce.org)/ [MCVE] – Pshemo

答えて

1

例外から私はあなたのテーブル名は、MySQLでの予約語であるorderであることがわかります。クエリを使用するには、そのクエリを変更する必要があります。

最も簡単なMySQLの具体的な方法は、

create table `order` 
#... rest of the definition 
insert into `order` values 
#... rest of insert statement 

があまりにもデータベースに依存しない方法があります。「`」でエスケープすることです。 詳細については、this answerを参照してください。