Поэтому, когда я собираю пользовательский ввод и использую это значение в инструкции SELECT, он только читает последнюю строку после пробела. Так, например, если я ищу «Нью-Йорк», будет отображаться только «Йорк». Может быть, я могу сделать LIKE '%?', Затем сохранить все значения, возвращенные в массиве, и точно сопоставить введенные пользователем значения с именем города в массиве и вернуть его, но должен быть способ просто вернуть то, чтоя хочу из запроса.
Моя таблица:
public void createTable(){
try{
Statement stmt = this.conn.createStatement();
stmt.execute("CREATE TABLE IF NOT EXISTS Cities (" +
"name varchar(50)," +
"population int," +
"latitude double precision," +
"longitude double precision" +
")");
System.out.println("Cities table created.");
}catch(SQLException e){
System.out.println(e.getMessage());
}
}
Вот моя функция, которая запрашивает
public void readLine(String city){
try{
String sqlLike = "SELECT * FROM cities " +
"WHERE cities.name = ?";
PreparedStatement ps = this.conn.prepareStatement(sqlLike);
ps.setString(1, city);
ResultSet rs = ps.executeQuery();
while(rs.next()){
System.out.println();
System.out.print(rs.getString(1));
System.out.print(" " + rs.getString(2));
System.out.print(" " + rs.getString(3));
System.out.print(" " + rs.getString(4) + "\n");
}
}catch(Exception e){
System.out.println(e);
}
}
Вот моя Главная, которая запрашивает ввод у пользователя. Пока нет подтверждения, так что не против, что
public static void main(String[] args){
Database dbConn = new Database();
dbConn.createTable();
// dbConn.insertIntoDatabase();
Scanner scnr = new Scanner(System.in);
String citySelect = "";
while(!citySelect.equals("exit".toLowerCase())){
System.out.print("Please enter the name of the city in question: ");
citySelect = scnr.next();
dbConn.readLine(citySelect.toLowerCase());
}
}
Любые ребята из Совета?