Java - MySql:查询以获取列的所有值

时间:2017-02-10 13:52:40

标签: java mysql jdbc

SELECT col_name1, col_name2, col_name3 from Table_Name;

我正在使用上面的SQL查询,我必须获取col_name3中具有5个以上值的所有值。

我正在使用:

while(rs.next()){
    String value1 = rs.getString("col_name3");
    String value2 = rs.getString("col_name3");
}

但String value1和value2中的所有值都是col_name3的最后一个值。为什么呢?

3 个答案:

答案 0 :(得分:2)

这个问题是因为如果你需要存储所有数据,你只能使用一个'String'对象,但是如果你有这样的话,你可以这样做:

List<String> list = new ArrayList();
while(rs.next()){
    String value=rs.getString("col_name3");
    list.add(value);
}

因为您每次都在存储value1和value2中的新String时存储,因此会覆盖以前的值,因此您只能得到最后一个。

使用Collection,您可以动态存储“ResultSet”中的“String”并将其全部保存。

然后对它们进行操作你可以使用这样的forEach:

for(String value : list){
    System.out.prinln(value);
}

这将在控制台中显示'list'中的每个值。

答案 1 :(得分:2)

如果您只想获得一列的结果,那么您可以使用List<String>

List<String> list = new ArrayList<>();

while(rs.next()){
   list.add(rs.getString("col_name3"));
}

如果您想要获取所有列,则需要将列表类型更改为对象:

List<MyObject> list = new ArrayList<>();

while(rs.next()){
   list.add(new MyObject(rs.getString("col_name1"), rs.getString("col_name2"), rs.getString("col_name3")));
}

您可以创建一个包含Object的所有列的类,例如:

Class MyObject{
   private String col1;
   private String col2;
   private String col3;

   //Constructor
   public MyObject(String col1, String col2, String col3){
      this.col1 = col1;
      this.col2 = col2;       
      this.col3 = col3
   }

   //getter and setters
}

修改

如果你想显示你的信息,你首先有两种方式,比如@Mick Mnemonic在你的类MyObject中的评论override toString()中说:

@Override
public String toString() {
    return "MyObject{" + "col1=" + col1 + ", col2=" + col2 + ", col3=" + col3 + '}';
}

你的循环应该是这样的:

for(int i = 0; i<list.size; i++){
    System.out.println(list.get(i));
}

或者你可以逐个元素地获取:

for(int i = 0; i<list.size; i++){
    System.out.println(list.get(i).getCol1() + " " + list.get(i).getCol2());
}

答案 2 :(得分:1)

因为每次都覆盖以前的值。尝试使用List:

List<string> myValues=new List<string>();
while(rs.next()){
    myValues.Add(rs.getString("col_name3"));   
}