используя SetString в цикле for - PullRequest
       0

используя SetString в цикле for

0 голосов
/ 11 августа 2011

У меня проблема с использованием setString в цикле.

У меня есть эта строка для вставки в таблицу в моей базе данных

12.S777.V77.D88.wagon / 1.Train / 889

и 777 представляют количество пассажиров во втором классе. Проблема в том, что количество пассажиров является переменным и может принимать до 3 случаев, как в этом примере:

12.F123.S777.V77.wagon / 1.Train / 889

код

String rs="insert into ligne1(date,immatr,number_passenger,version,wagon,train) VALUES(?,?,?,?,?,?)";
PreparedStatement ps = conn.prepareStatement(rs);

ps.setString(1, message[0]);
ps.setString(2, message[1]);
ps.setString(3, message[2]);

int b=0;

for(b=4;b<chaine.length-1;b++){
    ps.setString(b,melement[b]);
}

//I'm stuck here ! :(

ps.setString(5, message[3]);
ps.setString(6, message[4]);
ps.executeUpdate();

1 Ответ

1 голос
/ 11 августа 2011

Похоже, у вас есть формат ввода с переменным количеством полей. В этом случае разделения строки на . недостаточно, вам придется проанализировать данных.

Я бы реализовал простой класс держателей значений для вагона и некоторую логику для создания экземпляра на основе входной строки. Как:

public class Ligne1 {
   private String date;
   private int seatsInFirstClass;
   private int seatsInSecondClass;
   // ...

   public Ligne1(String data) {
     String values[] = data.split("\.");
     for (String value:values) {
       if (value.startsWith("F")) {
         setSeatsInFirstClass(value);
       } else if (value.startsWith("wagon")) {
         setWagon(value);
       } 
       // ...
     }
   }

   private void setSeatsInFirstClass(String value) {
     seatsInFirstClass = Integer.parseInt(value.substring(1));
   }
   public int getSeatsInFirstClass() {
     return seatsInFirstClass;
   }

   // if we need the total
   public int getNumberOfPassengers() {
     return seatsInFirstClass + seatsInSecondClass;
   }

   // ...
}

Наконец, вы используете экземпляр Ligne1 и его методы получения, чтобы установить значения в подготовленном операторе.

( Примечание: код только подсказывает решение, которое я выберу, оно неполное и не обрабатывает ошибки в исходных данных )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...