Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在for循环中使用SetString_Java_For Loop_Prepared Statement - Fatal编程技术网

Java 在for循环中使用SetString

Java 在for循环中使用SetString,java,for-loop,prepared-statement,Java,For Loop,Prepared Statement,我在for循环中使用setString时遇到问题 我要将这一行插入数据库中的表中 12.S777.V77.D88.货车/1.火车/889 777代表二等舱的乘客人数。问题是乘客人数是可变的,最多可以有3种情况,如下例: 12.F123.S777.V77.货车/1.火车/889 代码 String rs=“插入ligne1(日期、immatr、编号、乘客、版本、货车、列车)值(?、、?、?、?)”; 准备好的报表ps=conn.prepareStatement(rs); ps.setString(

我在for循环中使用
setString
时遇到问题

我要将这一行插入数据库中的表中

12.S777.V77.D88.货车/1.火车/889

777代表二等舱的乘客人数。问题是乘客人数是可变的,最多可以有3种情况,如下例:

12.F123.S777.V77.货车/1.火车/889

代码

String rs=“插入ligne1(日期、immatr、编号、乘客、版本、货车、列车)值(?、、?、?、?)”;
准备好的报表ps=conn.prepareStatement(rs);
ps.setString(1,消息[0]);
ps.setString(2,消息[1]);
ps.setString(3,消息[2]);
int b=0;

对于(b=4;b而言,您的输入格式似乎具有可变数量的字段。在这种情况下,仅在
处拆分字符串是不够的,您必须解析数据

我将为一辆货车实现一个简单的值持有者类和一些基于输入字符串创建实例的逻辑。例如:

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
的实例及其getter方法设置准备语句的值


(注意:代码只对我选择的解决方案给出了一个提示,它是不完整的,不会处理源数据中的错误)

我不理解循环或变量是什么。您的SQL语句有六个占位符,因此您需要精确绑定六个参数。嗯,我真的不理解。问题到底出在哪里(5,…)
?您的
for
循环似乎没有意义。下次,请适当缩进您的代码。好的,我知道我的代码很乱:$但是我如何将字符串表插入数据库中的表中
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;
   }

   // ...
}