SQLException,参数5没有值

时间:2016-01-29 15:13:30

标签: java mysql

我正在使用我构建的用于获取输入的UI和用于在本地存储数据的MySQL。但是,当我使用MySQL插入函数时,我遇到以下错误:

java.sql.SQLException: No value specified for parameter 5

我只有四个输入字段,表中有四列;但是,我的调试器说我有七个值参数。这是Insert语句:

private static final String GLInsert = "INSERT INTO gl_maint(GL_MAINT_NUM, GL_MAINT_NAME, GL_TYPE, BAL_FORWARD)"
        + "VALUES(?, ?, ?, ?) ON DUPLICATE KEY UPDATE "
        + "GL_MAINT_NAME = ?, GL_MAINT_TYPE = ?, BAL_FORWARD = ?";

和preparedStatement方法:

public void InsertGL(String ANstr, String ANAstr, String AIstr, double balfor) {
    try {
        conn = DriverManager.getConnection(ConnCheck, user, password);
        GL_List = FXCollections.observableArrayList();
        st = conn.prepareStatement(GLInsert);
        st.setString(1, ANstr);
        st.setString(2, ANAstr);
        st.setString(3, AIstr);
        st.setDouble(4, balfor);
        st.executeUpdate();
        conn.close();
    } catch (SQLException ex) {

        Logger.getLogger(GLMaintAcct.class.getName()).log(Level.SEVERE, null, ex);
    }
}

1 个答案:

答案 0 :(得分:5)

问题是根据此查询您有7个参数:

   "INSERT INTO gl_maint(GL_MAINT_NUM, GL_MAINT_NAME, GL_TYPE, BAL_FORWARD)"
    + "VALUES(?, ?, ?, ?) ON DUPLICATE KEY UPDATE "
    + "GL_MAINT_NAME = ?, GL_MAINT_TYPE = ?, BAL_FORWARD = ?";

但您只有4分配的价值如下:

     st.setString(1, ANstr);
     st.setString(2, ANAstr);
     st.setString(3, AIstr);
     st.setDouble(4, balfor);

您应该添加其他3值,并提供types

     st.setString(5, value5);
     st.setDouble(6, value6);
     st.setString(7, value7);