Java com.microsoft.sqlserver.jdbc.SQLServerException:INSERT语句中的列数多于values子句中指定的值

Java com.microsoft.sqlserver.jdbc.SQLServerException:INSERT语句中的列数多于values子句中指定的值,java,mysql,Java,Mysql,我有一个问题,我不知道如何解决它。我收到这个错误,但我不确定这个错误是否是因为我试图用extends调用2个函数 com.microsoft.sqlserver.jdbc.SQLServerException: There are more columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match

我有一个问题,我不知道如何解决它。我收到这个错误,但我不确定这个错误是否是因为我试图用extends调用2个函数

com.microsoft.sqlserver.jdbc.SQLServerException: There are more columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:196)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1454)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:786)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:685)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4026)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1416)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:185)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:160)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeUpdate(SQLServerStatement.java:642)



        at mylogin.Orders.executeSQLQuery(Orders.java:147)
        at mylogin.Orders.Make_OrderActionPerformed(Orders.java:439)
        at mylogin.Orders.access$100(Orders.java:23)
下面是我的代码,它似乎有问题(位于mylogin.Orders.executeSQLQuery(Orders.java:147))

这是我的代码,似乎有问题(在mylogin.Orders.Make\u OrderActionPerformed)

最后这一点(在mylogin.Orders.access$100)

我被困在这里好几天了有什么帮助吗???泰

这是一个错误:

INSERT INTO Orders(Pro_Id ,Pro_Name,Order_Quantity,Order_Date,Order_Id)VALUES ('"+Pro_Id.getText()+" ','"+Pro_Name.getText()+" ','"+Order_Quantity.getText()+" ,'"+Order_Date.getText()+" ,'"+Order_Id.getText()+" ') "

之后,“+Order\u Date.getText()+”

这样更好

String query = " insert into Orders(Pro_Id ,Pro_Name,Order_Quantity,Order_Date,Order_Id)"
        + " values (?, ?, ?, ?, ?)";


  PreparedStatement Stmt = conn.prepareStatement(query);
  preparedStmt.setString (1, Pro_Id.getText());
  preparedStmt.setString (2, Order_Quantity());
  preparedStmt.setDate   (3, Order_Quantity.getText());
  preparedStmt.setBoolean(4, Order_Date.getText());
  preparedStmt.setInt    (5, Order_Id.getText());


 Stmt.execute();

我认为信息非常清楚。顺便说一句,您应该了解准备好的语句“INSERT语句中的列比values子句中指定的值多”您不理解该语句的哪一部分?您缺少一个单引号:
,“+Order\u Quantity.getText()+”,”“+Order_Date
这就是为什么java绑定可能会节省一些向前移动的脑细胞,而将SQL语句拼凑在一起会带来麻烦和痛苦,而不仅仅是调试。错在哪里?问题本身?
public class Orders extends  javax.swing.JFrame {

    /**
     * Creates new form Orders
     */
    public Orders() {
        initComponents();
       show_Products_in_Jtable();
       show_Orders_in_Jtable();  
    }
INSERT INTO Orders(Pro_Id ,Pro_Name,Order_Quantity,Order_Date,Order_Id)VALUES ('"+Pro_Id.getText()+" ','"+Pro_Name.getText()+" ','"+Order_Quantity.getText()+" ,'"+Order_Date.getText()+" ,'"+Order_Id.getText()+" ') "
INSERT INTO Orders(Pro_Id ,Pro_Name,Order_Quantity,Order_Date,Order_Id)VALUES ('"+Pro_Id.getText()+" ','"+Pro_Name.getText()+" ','"+Order_Quantity.getText()+" ,'"+Order_Date.getText()+"' ,'"+Order_Id.getText()+" ') "
String query = " insert into Orders(Pro_Id ,Pro_Name,Order_Quantity,Order_Date,Order_Id)"
        + " values (?, ?, ?, ?, ?)";


  PreparedStatement Stmt = conn.prepareStatement(query);
  preparedStmt.setString (1, Pro_Id.getText());
  preparedStmt.setString (2, Order_Quantity());
  preparedStmt.setDate   (3, Order_Quantity.getText());
  preparedStmt.setBoolean(4, Order_Date.getText());
  preparedStmt.setInt    (5, Order_Id.getText());


 Stmt.execute();