java.sql.SQLSyntaxErrorException:分配的值的数量与指定或隐含列的数量不同

时间:2017-03-18 15:46:32

标签: java sql derby

我使用前端的url调用java函数将数据插入数据库

这是我的网址:

http://localhost:49779/BackEnd/mobile/rideshare/addride/1590105&toyota&4&Himalaya&10&good&12-04-2017

这是Java方法:

@Path("addride/{student_id}&{vehicle}&{seats}&{destination}&{price}&{description}&{datetime}")
@GET

public void addRide(@PathParam ("student_id") int S_id, @PathParam ("vehicle") String vehicle, @PathParam("seats") int seats, 
        @PathParam("destination") String destination, @PathParam("price") int price, @PathParam("description") String description,@PathParam("datetime") String datetime) throws ClassNotFoundException,SQLException{
    Connection myCon = null;
    Class.forName("oracle.jdbc.OracleDriver");
     myCon=DriverManager.getConnection("jdbc:derby://localhost:1527/ride_share","yadhu","yadhu");
    Statement st=myCon.createStatement();

    st.executeUpdate("INSERT INTO RIDES (STUDENT_ID,VEHICLE,SEATS,DESTINATION,PRICE,DESCRIPTION,DATETIME) VALUES "
            + "("+S_id+",'"+vehicle+"',"+seats+",'"+destination+"',"+price+",'"+description+"','"+datetime+"')");

}

表RIDES有一列RIDES_ID,它是用自动增量属性制作的。

这就是我创建表格的方式:

CREATE TABLE RIDES (RIDE_ID INTEGER GENERATED ALWAYS AS IDENTITY (start with 1000), STUDENT_ID INTEGER, VEHICLE VARCHAR(200), SEATS INTEGER, DESTINATION VARCHAR(200), PRICE INTEGER, DESCRIPTION VARCHAR(200), DATETIME VARCHAR(50));

当我隐式执行插入时,插入工作正常,但是当我使用url调用方法时,它显示错误。我找不到错误请帮助我。

1 个答案:

答案 0 :(得分:0)

错误表示您尝试添加的列数与声明的列数不匹配。 IE浏览器。插入表(col1,col2)值(val1,val2,val3)。

这可能是由于从URL读取参数时出现代码错误。 如果您传递的值之一包含昏迷“,”这也可能是因为。

第一级调试:
在执行它之前对语句执行SYSTEM.OUT.PRINTLN并在控制台中检查其结果以发现可能的错误。

另外,请使用PreparedStatement而不是Statement,因为这会阻止您的代码进行SQL注入并避免许多错误。