将最长的变量名称存储在另一个临时变量中

时间:2014-10-01 10:54:23

标签: java arraylist

这里我正在从文件中读取学生数据并存储在db.For中,使用的是ArrayList。 例如,

Student(){
private int rollNo;
private String name,department,branch; 
private String cgpa;

.
.
.
public int getRollNo(){
    return rollNo;
}
public String getName(){
    return name;
}
public String getDepartment(){
    return department;
}
public String getBranch(){
    return branch;
}
public String getCgpa(){
    return cgpa;
}

}

和我的arraylist变量是

ArrayList<Student> stu;

为了访问arraylist中的任何字段,我必须使用stu.get(i).getRollNo()stu.get(i).getName()stu.get(i).getDepartment()等等。在这里,我多次使用stu.get(i)。为了避免这种情况,我将stu.get(i)存储在临时变量中。例如

String temp="stu.get(i)."

sql="INSERT INTO STUDENT VALUES('"+temp+"getRollNo()"+"','"+temp+"getName()"+"','"+temp+"getDepartment()"+"','"+temp+"getBranch()"+"',"+Float.parseFloat(temp+"getCgpa()")+")";

但是当我使用temp+"getRollNO()"时,不会调用该方法。请解释这个问题。如果不可能,请给我另类的方法来实现同样的目标。

4 个答案:

答案 0 :(得分:4)

执行此操作的不好方法是将列表中的值嵌入到SQL字符串中:

sql="INSERT INTO STUDENT VALUES('"+ stu.get(i).getRollNo()+"','"+stu.get(i).getName()+"','"+...+")");

正确(和安全)的方法是使用PreparedStatement:

sql="INSERT INTO STUDENT VALUES(?,?,?,?,...,?)";

然后创建PreparedStatement并使用以下调用添加参数:

PreparedStatement ps = conn.prepareStatement (sql);
ps.setString(1,stu.get(i).getRollNo());
ps.setString(2,stu.get(i).getName());
...
ps.executeUpdate ();

如果您需要多次从列表中获取学生,可以将其更改为:

PreparedStatement ps = conn.prepareStatement (sql);
Student s = stu.get(i);
ps.setString(1,s.getRollNo());
ps.setString(2,s.getName());
...
ps.executeUpdate ();

答案 1 :(得分:2)

尝试以下方法:

Student s = stu.get(i);
sql = "INSERT INTO STUDENT VALUES('"+s.getRollNo()+"','"+s.getName()+"','"+s.getDepartment()+"','"+s.getBranch()+"',"+Float.parseFloat(s.getCgpa())+")";

该列表包含学生,因此您应该从列表中获取学生对象并直接访问getter。

答案 2 :(得分:0)

您想要使用

Student temp=stu.get(i)
temp.getRollNo() , temp.getName()

stu.get(i)返回Student类型的实例。然后,您可以使用此参考来访问学生中的字段。你以前做的就是将值“stu.get(i).getRollNo()”写入数据库。

答案 3 :(得分:0)

在这里,当你调用stu.get(i)时,它返回一个Student对象而不是String。因此,您必须将引用类型更改为Student。进行以下更改,

学生temp = stu.get(i);

祝你好运!!!