我試圖輸入城市名稱,如果數(shù)據(jù)庫中存在城市名稱(否則錯誤消息),然后我想打印選定的城市名稱、人口、緯度和經(jīng)度。其余代碼運行良好。數(shù)據(jù)庫圖片在這里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 回答

寶慕林4294392
TA貢獻2021條經(jīng)驗 獲得超8個贊
這將檢查您的數(shù)據(jù)庫中是否有城市名稱
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();

子衿沉夜
TA貢獻1828條經(jīng)驗 獲得超3個贊
看起來好像缺少引號,請嘗試以下操作:
rs = stmt.executeQuery("SELECT * FROM cities WHERE name = '"+Name+"' ");

慕虎7371278
TA貢獻1802條經(jīng)驗 獲得超4個贊
首先,如果字段“名稱”是字符變化或文本,則必須像這樣修改第 8 行:
rs = stmt.executeQuery("SELECT * FROM cities WHERE name ='"+Name+"'");
添加回答
舉報
0/150
提交
取消