有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaMySQL:查询以获取列的所有值

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");
}

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


共 (3) 个答案

  1. # 1 楼答案

    这个问题是因为如果您需要存储所有数据,您不能仅使用“String”对象,而是使用集合,您可能会这样做:

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

    因为正如您所做的那样,每次在value1和value2中存储一个新字符串时,都会覆盖以前的值,因此您将只获得最后一个值

    通过使用集合,您可以动态存储在“ResultSet”中获得的“String”,并将其全部保存

    然后,要对其进行操作,您可以使用如下forEach:

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

    这将在控制台中显示“列表”中的每个值

  2. # 2 楼答案

    因为每次覆盖上一个值时。尝试使用列表:

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

    如果只想获得一列的结果,那么可以使用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")));
    }
    

    您可以创建包含对象所有列的类,例如:

    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 Mememonic在你的类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());
    }