2014-09-22 2 views
0

В настоящее время я пытаюсь сохранить значения строки в другом файле класса в JAVA под названием Memory.JAVA. Причина, по которой я делаю это, состоит в том, что переменные не сохраняются за пределами Try-Catch Blocks. Поэтому я начинаю класс в блоке попытка поймать, используя этот код:Сохранение значений строки в другой класс и ее получение

Memory mem = new Memory(); 

И тогда, когда я хочу, чтобы сохранить строку, я использую следующее:

mem.brother1ID = "Whatever"; 

Причина, почему я не создавая его как новую строку, потому что в классе памяти я уже начал эту строку. Чтобы проверить, что это было сохранено, я использовал System.out.println для распечатки результата, который в этом случае был «Независимо», но когда я пытаюсь получить тот же результат, напечатанный в том же классе, я получаю результат «null». У кого-нибудь есть предложения по моей проблеме? Пожалуйста, не стесняйтесь комментировать ниже. Благодаря!

UPDATE:

Некоторый код размещен ниже:

private void searchFieldKeyReleased(java.awt.event.KeyEvent evt) {           
    try { 

     Memory mem = new Memory(); 

     String sql = "select * from userInfo where firstName= ? OR lastname = ?"; 
     pst=conn.prepareStatement(sql); 
     pst.setString(1, searchField.getText()); 
     pst.setString(2, searchField.getText()); 

     rs=pst.executeQuery(); 

     if(rs.next()) { 
      String firstName = rs.getString("firstName"); 
      String lastName = rs.getString("lastName"); 
      String placeOfResidence = rs.getString("placeOfResidence"); 
      String employmentStatus = rs.getString("employmentStatus"); 
      String currentEmployer = rs.getString("currentEmployer"); 
      String taxStatus = rs.getString("taxStatus"); 
      String dateOfBirth = rs.getString("dateOfBirth"); 
      String mother = rs.getString("mother"); 
      String father = rs.getString("father"); 
      String brother1 = rs.getString("brother1"); 
      String brother2 = rs.getString("brother2"); 
      String brother3 = rs.getString("brother3"); 
      String brother4 = rs.getString("brother4"); 
      String brother5 = rs.getString("brother5"); 
      String sister1 = rs.getString("sister1"); 
      String sister2 = rs.getString("sister2"); 
      String sister3 = rs.getString("sister3"); 
      String sister4 = rs.getString("sister4"); 
      String sister5 = rs.getString("sister5"); 
      mem.brother1ID = rs.getString("brother1ID"); 
      mem.brother2ID = rs.getString("brother2ID"); 
      mem.brother3ID = rs.getString("brother3ID"); 
      mem.brother4ID = rs.getString("brother4ID"); 
      mem.brother5ID = rs.getString("brother5ID"); 
      mem.sister1ID = rs.getString("sister1ID"); 
      mem.sister2ID = rs.getString("sister2ID"); 
      mem.sister3ID = rs.getString("sister3ID"); 
      mem.sister4ID = rs.getString("sister4ID"); 
      mem.sister5ID = rs.getString("sister5ID"); 
      mem.fatherID = rs.getString("fatherID"); 
      mem.motherID = rs.getString("motherID"); 
      System.out.println(mem.brother1ID); 
      System.out.println(firstName + " " + lastName); 
      firstNameField.setText(firstName); 
      lastNameField.setText(lastName); 
      placeOfResidenceField.setText(placeOfResidence); 
      employmentStatusField.setText(employmentStatus); 
      currentEmployerField.setText(currentEmployer); 
      taxStatusField.setText(taxStatus); 
      dateOfBirthField.setText(dateOfBirth); 
      motherField.setText(mother); 
      fatherField.setText(father); 
      brothersField1.setText(brother1); 
      brothersField2.setText(brother2); 
      brothersField3.setText(brother3); 
      brothersField4.setText(brother4); 
      brothersField5.setText(brother5); 
      sisterField1.setText(sister1); 
      sisterField2.setText(sister2); 
      sisterField3.setText(sister3); 
      sisterField4.setText(sister4); 
      sisterField5.setText(sister5); 



     } 

    } catch(Exception e) { 
     JOptionPane.showMessageDialog(null, e); 
    } 
}  

И это, когда я пытаюсь получить те же результаты System.out.println, как и раньше:

private void brotherViewButton1ActionPerformed(java.awt.event.ActionEvent evt) {             
    try { 

     Memory mem = new Memory(); 

     String sql = "select * from userInfo where id=?"; 
     pst=conn.prepareStatement(sql); 
     String IDNO = mem.brother1ID; 
     System.out.println(IDNO); 
     pst.setString(1, IDNO); 

     rs=pst.executeQuery(); 

     if(rs.next()) { 
      String firstName = rs.getString("firstName"); 
      String lastName = rs.getString("lastName"); 
      String placeOfResidence = rs.getString("placeOfResidence"); 
      String employmentStatus = rs.getString("employmentStatus"); 
      String currentEmployer = rs.getString("currentEmployer"); 
      String taxStatus = rs.getString("taxStatus"); 
      String dateOfBirth = rs.getString("dateOfBirth"); 
      String mother = rs.getString("mother"); 
      String father = rs.getString("father"); 
      String brother1 = rs.getString("brother1"); 
      String brother2 = rs.getString("brother2"); 
      String brother3 = rs.getString("brother3"); 
      String brother4 = rs.getString("brother4"); 
      String brother5 = rs.getString("brother5"); 
      String sister1 = rs.getString("sister1"); 
      String sister2 = rs.getString("sister2"); 
      String sister3 = rs.getString("sister3"); 
      String sister4 = rs.getString("sister4"); 
      String sister5 = rs.getString("sister5"); 
      System.out.println(firstName + " " + lastName); 
      firstNameField.setText(firstName); 
      lastNameField.setText(lastName); 
      placeOfResidenceField.setText(placeOfResidence); 
      employmentStatusField.setText(employmentStatus); 
      currentEmployerField.setText(currentEmployer); 
      taxStatusField.setText(taxStatus); 
      dateOfBirthField.setText(dateOfBirth); 
      motherField.setText(mother); 
      fatherField.setText(father); 
      brothersField1.setText(brother1); 
      brothersField2.setText(brother2); 
      brothersField3.setText(brother3); 
      brothersField4.setText(brother4); 
      brothersField5.setText(brother5); 
      sisterField1.setText(sister1); 
      sisterField2.setText(sister2); 
      sisterField3.setText(sister3); 
      sisterField4.setText(sister4); 
      sisterField5.setText(sister5); 



     } 

    } catch(Exception e) { 
     JOptionPane.showMessageDialog(null, e); 
    } 
}  
+1

Ситуация, поскольку вы объяснили это до сих пор, очень сбивает с толку. Я думаю, вам нужно будет опубликовать весь фрагмент кода, с которым вы столкнулись. –

+0

Хорошо, я добавлю к своему сообщению. –

+1

Вместо того, чтобы пытаться описать ваш код, почему бы просто не отправить пример кода? –

ответ

1

Причина величина brother1ID в вашем Memory объект null - это потому, что вы используете новый экземпляр этого объекта.

Я настоятельно рекомендую вам ознакомиться с тем, как объекты экземпляров имеют область видимости на Java, и что это значит создать новый экземпляр против существующего.

Например, когда вы это делаете:

Memory mem = new Memory(); 
mem.brother1ID = "1234"; 

mem = new Memory(); 
System.out.println(mem.brother1ID); 

Значение печататься будет null. Это связано с тем, что вы используете новый экземпляр этого класса. Если вы хотите сохранить значения во многих вызовах методов, лучшим вариантом может быть сохранение объекта Memory в качестве переменной экземпляра любого класса, который содержит методы, которые вы указали. т.е .:

private Memory memory = new Memory(); 

... 

private void searchFieldKeyReleased(java.awt.event.KeyEvent evt) { 
    // Use 'this.memory' 
    this.memory.brother1ID = "1234"; 
    //(or) 
    System.out.println(this.memory.brother1ID); 
} 

private void brotherViewButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
    // Use 'this.memory' 
} 
+0

Не могли бы вы объяснить, как я могу использовать this.memory для сохранения переменной в классе памяти? –

+0

Добавлено. Опять же, я думаю, вам, вероятно, следует поиграть с некоторыми небольшими Java-классами и поэкспериментировать с использованием переменных экземпляра. Это очень важная концепция для понимания, и, хотя крупные проекты могут быть полезными, чтобы увидеть функцию, вы можете столкнуться слишком много сразу. –

+0

Просто интересно, почему вы используете this.memory.brother1ID, когда можете просто делать memory.brother1ID? –

0

Пожалуйста, смотрите здесь

try { 

    Memory mem = new Memory(); 

    String sql = "select * from userInfo where id=?"; 
    pst=conn.prepareStatement(sql); 
    String IDNO = mem.brother1ID; 
    System.out.println(IDNO); 

Вы создаете объект памяти и не устанавливая никакого значения. , тогда вы пытаетесь напечатать файл brotherId, который будет null, все переменные String будут инициализированы нулевым, поэтому вы получаете «null». то, что вы можете сделать, это положить заявление печати из блока catch catch в нижней части, если в вашей базе данных есть записи, он распечатает последние записи brotherId.

Смежные вопросы