Java 参数索引中的错误超出范围(2>;个参数,即1)

Java 参数索引中的错误超出范围(2>;个参数,即1),java,Java,我面临着这个问题: 参数索引超出范围(2>参数数量,即1) 但我无法发现我错了什么 请遵循以下我的代码: Constants.java public static final String INSERTDEVICES = "insert into devices (I_ENVIRONMENT," + "I_APP_ID,E_STATUS,DT_MODIFIED,"

我面临着这个问题:

参数索引超出范围(2>参数数量,即1)

但我无法发现我错了什么

请遵循以下我的代码:

Constants.java

public static final String INSERTDEVICES = "insert into devices (I_ENVIRONMENT,"
                                                + "I_APP_ID,E_STATUS,DT_MODIFIED,"
                                                + "DT_LAST_COMMUNICATION,"
                                                + "DT_CREATED,DS_ENDPOINT_ARN,"
                                                + "DS_DEVICE_VERSION,DS_DEVICE_UID,"
                                                + "DS_DEVICE_TOKEN,DS_DEVICE_NAME,"
                                                + "DS_DEVICE_MODEL,DS_APP_VERSION,"
                                                + "B_PUSHSOUND,B_PUSHBADGE,B_PUSHALERT, I_ID_SYSTEM) "
                                                + "values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
java

DBConnect db = DBConnect.getInstance();

        try {

            Calendar calendar = Calendar.getInstance();
            String dName = device.getDeviceName().replace("%20", " ");
            PreparedStatement preparedStatement = db.getConnection().prepareStatement(Constants.INSERTDEVICES);

            preparedStatement.setLong(1, device.getEnvironment().ordinal());
            preparedStatement.setLong(2, device.getAppID().ordinal());
            preparedStatement.setString(3, "active");
            preparedStatement.setTimestamp(4, new Timestamp(calendar.getTime().getTime()));
            preparedStatement.setTimestamp(5, new Timestamp(calendar.getTime().getTime()));
            preparedStatement.setTimestamp(6, new Timestamp(calendar.getTime().getTime()));
            preparedStatement.setString(7, device.getEndPointArn());
            preparedStatement.setString(8, device.getDeviceVersion());
            preparedStatement.setString(9, device.getDeviceUID());
            preparedStatement.setString(10, device.getDeviceToken());
            preparedStatement.setString(11, dName);
            preparedStatement.setString(12, device.getDeviceModel());
            preparedStatement.setString(13, device.getAppVersion());
            preparedStatement.setBoolean(14, device.isPushSound());
            preparedStatement.setBoolean(15, device.isPushBadge());
            preparedStatement.setBoolean(16, device.isPushAlert());
            preparedStatement.setLong(17, device.getSystem().ordinal());

            preparedStatement.executeUpdate();

        } catch (SQLException e) {

            e.printStackTrace();
        }
此行中出现了异常:

preparedStatement.setLong(2, device.getAppID().ordinal());
枚举: getApID()=枚举应用程序(我们要使用的应用程序类型) device.getEnvironment()=枚举环境(认证、生产)


非常感谢

尝试打印常量。插入设备。它可能不是您在此处显示的值…什么是
device.getAppID()
device.getAppID().ordinal()
?在问题主体添加了信息…如果顺序值检索int值,为什么要使用setLong来表示顺序值?