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

Java PostgreSQL数据库在名称列中搜索城市名称,并打印所选城市名称的所有记录,java,database,postgresql,Java,Database,Postgresql,我试图输入城市名称,如果数据库中存在城市名称(否则错误消息),则我要打印所选城市名称、人口、纬度和经度。代码的其余部分运行良好 首先,如果字段“name”是字符变化或文本,则必须修改第8行,如下所示: rs = stmt.executeQuery("SELECT * FROM cities WHERE name ='"+Name+"'"); 这将检查数据库中是否有城市名称 rs = stmt.executeQuery("SELECT * FROM cities WHERE name = '"

我试图输入城市名称,如果数据库中存在城市名称(否则错误消息),则我要打印所选城市名称、人口、纬度和经度。代码的其余部分运行良好

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

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

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

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();

看起来缺少引号,请尝试以下操作:

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

从表中选择时出错:列索引超出范围:2,列数:1。它不工作。String name=rs.getString(1);整数总体=rs.getInt(2);双纬度=rs.getDouble(3);双经度=rs.getDouble(4);从表中选择时出错:列索引超出范围:2,列数:1。不要将值连接到SQL字符串中。请使用
PreparedStatement
-然后问题将自动消失。从表中选择时出错:列索引超出范围:2,列数:1。它不起作用。请尝试使用:
String name=rs.getString(“name”);整数人口=rs.getInt(“人口”);双纬度=rs.getDouble(“纬度”);双经度=rs.getDouble(“经度”)
rs = stmt.executeQuery("SELECT * FROM cities WHERE name = '"+Name+"' ");