2015-08-25 4 views
0

Я работаю над скриптом, который должен хранить всю извлеченную таблицу в хэш-карту. До сих пор мне удалось получить записи из базы данных MySQl, но я не могу хранить и отображать записи из хэш-карты. Просьба направить меня к правильному коду для того же.извлекать записи sql и хранить в hashmap

код до сих пор:

public class myRow { 
private int id; 
private String name; 
private int level; 
private int m1; 
private int m2; 
private int m3; 

// the constructor 
public myRow(String n, int l,int m1, int m2, int m3) { 

    this.name = n; 
    this.level = l; 
    this.m1 = m1; 
    this.m2 = m2; 
    this.m3 = m3; 
}} 

Основной класс выглядит следующим образом:

public static void main(String[] args){ 
    Connection conn = null; 
    Statement stmt1 = null; 
    try{ 
     Class.forName("com.mysql.jdbc.Driver").newInstance(); 

     System.out.println("Connecting to database...\n\n"); 
     conn = DriverManager.getConnection(DB_URL,USER,PASS); 

     stmt1 = conn.createStatement(); 
     Map<Integer, myRow> map = new HashMap<Integer, myRow>(0); 

     try { 
      String sql="SELECT * FROM recs.new_table;"; 
      System.out.println(sql); 
      ResultSet rs = stmt1.executeQuery(sql); 

      while(rs.next()){ 
       myRow mr = new myRow(rs.getString(2), rs.getInt(3),rs.getInt(4),rs.getInt(5),rs.getInt(6)); 
       map.put(rs.getInt(1), mr); 
      } 

     } catch (SQLException sqle) { 
      sqle.printStackTrace(); 
     } 

     System.out.println(map); 
     System.out.println(map.containsValue("mark")); 
     }catch(Exception e){ 
     System.out.println(" ERROR :: "+e); 
    } 

В таблице записи следующим образом: enter image description here

+0

Можете ли вы объяснить, что этот вопрос вы испытываете это? – fdsa

+0

@fdsa Я хочу сохранить записи таблицы из базы данных в hashmap. И после этого я хочу получить и отобразить записи из хэш-карты. Хотя, я могу получить записи из базы данных, я не могу хранить и извлекать из hashmap. – Arnab

+0

еще раз в чем проблема? ... исключение ... стек трассировки? – saurav

ответ

1

Код выглядит нормально меня, за исключением линии:

System.out.println(map.containsValue("mark")); 

Это не будет содержать строку, содержащую mark. containsValue опирается на метод объекта equals, и поскольку вы передаете простую строку, объект класса String никогда не будет равен классу myRow, поэтому он никогда не найдет его.

Чтобы найти одну из строк в карте, вам нужны коды, как:

myRow findRowByName(String name) { 
    for (myRow row : map.values()) { 
    if (row.name.equals(name)) { 
     return row; 
    } 
    } 
} 
Смежные вопросы