PostgreSQL数据库在名称列中搜索城市名称,并打印所选城市名称的所有记录

时间:2019-10-31 10:43:45

标签: java database postgresql

如果数据库中存在城市名,我正在尝试输入城市名(其他错误消息),然后我要打印选定的城市名,人口,纬度和经度。其余代码运行良好。

Database image is here

public static void city(){
        ResultSet rs = null;
        Scanner k = new Scanner (System.in);
        System.out.println("Enter the name");
        String Name = k.nextLine ();

        try {
            rs = stmt.executeQuery("SELECT * FROM cities WHERE name ="+Name);
            // At least a record selected
            if(rs.isBeforeFirst ()){
                //Iterates through each record
                while (rs.next ()){
                    String name = rs.getString (i:1);
                    int population = rs.getInt(i:2);
                    double latitude = rs.getDouble (i:3);
                    double longitude = rs.getDouble(i:4);


                    System.out.println("Name: " + name);
                    System.out.println("Population: " + population);
                    System.out.println("Latitude: " + latitude);
                    System.out.println("Longitude: " + longitude);
                    System.out.println();
                }
            }
            else {
                System.out.println("No records selected.");
            }
        }

        catch(SQLException e) {
            System.out.println("Error selecting from table: " + e.getMessage());
        }
        finally {
            try {
                rs.close();                                                                                             
            }
            catch(Exception e) {
                //ResultSet still null/nothing to close
            }
        }

    }

3 个答案:

答案 0 :(得分:0)

首先,如果“名称”字段是字符变化或文本,则必须按如下所示修改第8行:

rs = stmt.executeQuery("SELECT * FROM cities WHERE name ='"+Name+"'");

答案 1 :(得分:0)

这将检查您的数据库中是否有城市名称

rs = stmt.executeQuery("SELECT * FROM cities WHERE name = '"+name+"'");
if(rs.next()){
   //it exist
   //print record
}
else{
   //it does not exist
   System.out.println("Error Message!");
}

您也可以使用PreparedStatement代替上面的查询。

PreparedStatement p = yourConnection.prepareStatement("SELECT * FROM cities WHERE name = ?");
p.setString(1, name);
rs = p.executeQuery();

答案 2 :(得分:0)

好像缺少引号,请尝试以下操作:

rs = stmt.executeQuery("SELECT * FROM cities WHERE name = '"+Name+"' ");