2015-03-10 2 views
0

Я создал метод для выполнения массива значений в Java. Всякий раз, когда я пытаюсь запустить его, я получаю исключение ArrayOutOfBoundsException. Моя консоль указывает на ошибку , являющуюся оператором if.ArrayOutOfBoundsException в методе PreparedStatement

for (int i = 1; i <= array.length; i++) { 
     if (array[i] instanceof String) { 
      ps.setString(i, (String) array[i]); 
     } else if (array[i] instanceof Integer) { 
      ps.setInt(i, (int) array[i]); 
     } 
    } 

У меня нет проблем с подключением или подготовкой. У меня только проблемы с этим методом, потому что массив (Object []) работает неправильно. Я использую этот метод для вставки и удаления разных данных из таблицы «user». Здесь я беру 4 параметра, первый из которых является идентификатором (который автоматически генерируется и помещается в качестве первичного ключа. Второй параметр - это имя для моего пользователя, третий - пользовательский UUID, а последний - это ранг (вид доступа) для пользователя. что первый один (ID) не считается после того, как он auto_generated на каждой вставки Так давайте не будем рассчитывать, что с нами Вот пример того, как я использую метод:..

executeQuery("INSERT INTO `user` (`name`, `uuid`, `rank`) VALUES (?, ?, ?)", new Object[]{"'username'", "'myUUID'", 64}); 

Так после того, как у меня есть выполняется этот метод, я в конечном итоге с ошибкой говорить мне это:.

java.lang.ArrayIndexOutOfBoundsException: 3 
     at com.java.tarjeihs.plugin.mysql.MySQLAccessor.executeQuery(MySQLAccessor.java:107) ~[?:?] 
     at com.java.tarjeihs.plugin.user.UserHandler.test(UserHandler.java:24) ~[?:?] 

Если вы, ребята, были проблемы понять мое объяснение, пожалуйста, спросите меня для лучшего объяснения

+0

возможного дубликат [Что вызывает java.lang.ArrayIndexOutOfBoundsException и как это предотвратить?] (http://stackoverflow.com/questions/5554734/what-causes-a-java-lang-arrayindexoutofboundsexception-and-how-do-i-prevent-it) – BackSlash

+0

** int i = 1; i <= array.length **: array [array.length] -> ArrayOutOfBoundsException – agad

+0

Массивы от 0 до длины - 1, а не от 1 до длины. –

ответ

2

индексы массива равны нуль основы, и PreparedStament «s один основе, так что вы неудача на смещенном по одному вопросу:

for (int i = 0; i < array.length; i++) { 
    if (array[i] instanceof String) { 
     ps.setString(i + 1, (String) array[i]); 
    } else if (array[i] instanceof Integer) { 
     ps.setInt(i + 1, (int) array[i]); 
    } 
} 
+0

Спасибо, это решило мою проблему. Дело закрыто .. – tarjeihs

Смежные вопросы