الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

خطأ في الinsert في الdatabase

بدأه قمر الامارات في 20 مايو 2011 · 6 رد · 617 مشاهدة · في JavaEE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

الصفحة الاولى هي صفحة الCart يعني تعرض المنتجات الخاصة بهالمستخدم ... اذا ضغط المستخدم على submit , تتخزن هالبيانات في جدول الorder

هذا كود صفحة الCart :

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<%@page import="java.lang.String"%>
<%@ page import="java.sql.*" %>
<%! Date today;%>


<%@ page session="true"%>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>your Cart</h1>
        <%@ page import="java.sql.*" %>
        <%
                    try {
                        Connection con = null;

                        String databaseURL = "jdbc:mysql://localhost:3306/fashion";
                        String driverName = "com.mysql.jdbc.Driver";
                        String user = "root";
                        String password = "root";



                        String Cust_ID = (String) session.getAttribute("Cust_ID");
                        Class.forName(driverName).newInstance();

                        con = DriverManager.getConnection(databaseURL, user, password);

                        if (!con.isClosed()) {
                            System.out.println("Successfully connected to the DataBase Server...");
                        }

                        Statement statement;

                        statement = con.createStatement();

                        String selectQuery = "SELECT * FROM Cart where Cust_ID= '" + Cust_ID + "'";

                        ResultSet resultSet = null;

                        resultSet = statement.executeQuery(selectQuery);


                        if (resultSet != null) // Succes
                        {

                            while (resultSet.next()) {


                                Integer Pro_ID = (Integer) resultSet.getObject("Pro_ID");
                                Integer price = (Integer) resultSet.getObject("Pro_Price");
                                Integer Quantity = (Integer) resultSet.getObject("Cart_Quantity");
                                Integer size = (Integer) resultSet.getObject("size");

                                java.util.Date date = new java.util.Date();
                                long t = date.getTime();
                                java.sql.Date sqlDate = new java.sql.Date(t);



                                java.util.Date dt = new java.util.Date();

                                java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd");

                                String currentTime = sdf.format(dt);




        %>


        <form  name = "form " action="addtoOrder" method = "POST" >


            <input type="hidden" value="<%=Cust_ID%>" name="Cust_ID">
            <input type="hidden" value="<%=Pro_ID%>" name="productID">
            <input type="hidden" value="<%=price%>" name="price">
            <input type="hidden" value="<%=Quantity%>" name="Quantity">
            <input type="hidden" value="<%=size%>" name="size">
            <input type="hidden" value="<%=currentTime%>" name="date">
            <input type="submit" value="Confirm" name="submit" />





            <%
                                System.out.println(currentTime);

                                out.println("product No:" + Pro_ID);
                                out.println("size:" + size);
                                out.println("Quantity" + Quantity);
                            out.println("price" + price + "<br/>");%>
        </form>

        <% }

                            resultSet.close();

                        }

                        statement.close();

                        if (con != null) {
                            con.close();
                        }

                    } catch (Exception e) {
                        System.err.println("Exception: " + e.getMessage());


                    }


        %>

        <a href="index.jsp">Home</a> <br><br>


    </body>
</html>

هذا كود الadd to order : insert

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
import javax.servlet.RequestDispatcher;

/**
 *
 * @author 200610736
 */
public class addtoOrder extends HttpServlet {

    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();



        // Get User Inputs
        String Cust_ID = request.getParameter("Cust_ID");
        String Pro_ID = request.getParameter("productID");
        String price = request.getParameter("price");
        String Quantity = request.getParameter("Quantity");
        String size = request.getParameter("size");
        String order_date = request.getParameter("date");




        //Connect to Database
        Connection con = null;
        Statement stmt = null;
        String databaseURL = "jdbc:mysql://localhost:3306/fashion";
        String driverName = "com.mysql.jdbc.Driver";
        String user = "root";
        String pass = "root";

        try {
            Class.forName(driverName).newInstance();
            con = DriverManager.getConnection(databaseURL, user, pass);
            stmt = con.createStatement();
        } catch (Exception e) {
            System.out.println("ERROR Connecting to DB: " + e);
            return;
        }

//Insert data
        String insertStmt = "insert into order values ("
                + Cust_ID + ", "
                + Pro_ID + ", "
                + Quantity + ", "
                + size + ", "
                + price + ", "
                + "'" + order_date + "'"
                + ")";
        System.out.println(insertStmt);
        try {
            stmt.executeUpdate(insertStmt);
        } catch (Exception e) {
            System.out.println("ERROR: Insert into DB: " + e);
            return;
        }


        RequestDispatcher dispatcher =
                getServletContext().getRequestDispatcher("/myCart.jsp?Cust_ID='" + Cust_ID + "'");
        dispatcher.forward(request, response);




        //Close database
        try {
            stmt.close();
            con.close();
        } catch (SQLException e) {
            System.out.println("Workshop Register: ERROR: closing DB connection: " + e);
        }
    }
}

و هذا ال order table :

--
-- Create schema fashion
--

CREATE DATABASE /*!32312 IF NOT EXISTS*/ fashion;
USE fashion;

--
-- Table structure for table `fashion`.`order`
--

DROP TABLE IF EXISTS `order`;
CREATE TABLE `order` (
  `Order_ID` int(10) unsigned NOT NULL auto_increment,
  `Cust_ID` int(11) default NULL,
  `Pro_ID` int(11) default NULL,
  `Quantity` int(11) default NULL,
  `size` int(11) default NULL,
  `price` int(11) default NULL,
  `order_date` date default NULL,
  PRIMARY KEY  (`Order_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

وهذا الerror اللي يظهر في الNetBeans :

اقتباس

ERROR: Insert into DB: 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 values (1, 4, 700, 1, 3, '2011-05-20')' at line 1

ممكن حد يعطيني فكرة وين الغلط !! ؟

#2

order هو عبارة عم reserved word، وأنت تستعمله في إسم الجدول.

إجعل إسم الجدول بين backquote

String insertStmt = "insert into `order` values ("

http://dev.mysql.com/doc/refman/5.5/en/identifiers.html

#3

غيرت اسم الجدول .. بس طلع عندي error يديده :

اقتباس

insert into `order` values ( 1, 4, 700, 1, 3, '2011-05-21')

ERROR: Insert into DB: java.sql.SQLException: Column count doesn't match value count at row 1

#4

رسالة الخطأ واضحة. عدد الأعمدة في الجدول ليس موافق لعدد القيم التي تريد إضافتها.

#5

انا حاطه ال order_ ID >>> auto increment

فكيف اقدر اضيفها في الtable !!

#6

مرر لها القيمة NULL

1
#7

اشتغل اخيراا .. شكرا جزيلاا ^____^

مواضيع مشابهة