2013-05-17 2 views
0

Как я могу вернуть два разных типа столбцов (int, string) отдельно в таблице MySQL? Я пробовал использовать этот код, но я не могу понять это. Пожалуйста, любезно, не могли бы вы сказать мне, что случилось?Как вернуть два разных значения, используя только один метод?

пожалуйста замечания ::: я хочу вернуться keyid_col и key_col

Вот мой код :::

public void retrieve_keyword() throws SQLException{ 

    try { 
     ResultSet results = statement.executeQuery 
       ("SELECT keyword_id,key_words FROM keywordlist"); 
     try { 

      while (results.next()) { 
       int numColumns = 
         results.getMetaData().getColumnCount(); 
       int keyid_col = results.getInt("keyword_id"); 
       String key_col = results.getString("key_words"); 

       if (numColumns == 2) { 
        System.out.println(results.getObject(numColumns)); 
       } 

       for (int i = 1 ; i <= numColumns ; i++) { 
        System.out.println("COLUMN " + i + " = " + results.getObject(i)); 
       }   
      } 
     } 

     catch(Exception ew){ 
      System.out.println(ew); 
     } 
    }catch(Exception ew){ 
     System.out.println(ew); 
    } 
} 
+0

Необходимо вернуть класс. – SLaks

+0

нет дорогих SLaks мне нужно вернуть keyid_col и key_col – Freeman

+0

Второй раз спросил сегодня - http://stackoverflow.com/questions/16609269/best-practice-for-returning-multiple-values-in-java#comment23876820_16609269 –

ответ

2

Java не поддерживает это из коробки. Вам нужно будет создать структуру данных и использовать ее. Например:

public class retType { 
    public retType(int val1, string val2) { 
      this.val1 = val1; 
      this.val2 = val2; 
    } 
    public int val1; 
    public string val2; 
} 

public retType someFunc() 
{ 
    int i = 1; 
    string j = "example"; 
    return new retType(i, j); 
} 
1

Вы можете вернуть массив или список (или другие коллекции ориентированных структур данных), или вы можете вернуть экземпляр типа (класса или структуры), который имеет два свойства, по одному для каждого вещь, которую вы хотите вернуть.

Языки, такие как Java, Javascript, C# и т. Д., Не допускают множественные возвращенные элементы. Вы должны вернуть что-то, что содержит все, что имеет для вас значение.

0

В Java и большинстве языков вы не можете вернуть два значения из одного метода. Альтернативам было бы передать объект и изменить значения внутри объекта или обернуть возвращаемые значения в качестве объекта. Или вы можете вернуть некоторую коллекцию, например, List, Set или Map.

0

Ваш выбор состоит в том, чтобы определить класс, в котором есть поля, которые вы хотите (например, в примере Captain Skyhawk), или вернуть объект [], который может просто содержать объект Integer и String внутри него. Примером этого является

Object objArrayReturnValue[] = { new Integer(51), "abcd" }; 
return objArrayReturnValue; 

Это очень просто, но и «ленивым» в том, что большинство людей будет препятствовать его использованию. Когда вы возвращаете массив объектов, вы теряете много преимуществ (в основном) строго типизированного языка, такого как Java.

0

Я делаю это с помощью HashMap:

public Map<String, String> getUser() throws SQLException { 
    Map<String, String> users = new HashMap<>(); 
    ...do query... 
    users.put(p_key,username); 
    return users; 
} 

Если уроженцем коллекция не делает это для вас, чем вы будете нуждаться в пользовательский объект, чтобы сделать это. верните класс.

1

Вы можете использовать класс Pair.

class Pair<T1,T2> { 
    private final T1 i1; 
    private final T2 i2; 

    public Pair(T1 i1, T2 i2) { 
    this.i1 = i1; 
    this.i2 = i2; 
    } 

    public T1 getI1() { 
    return i1; 
    } 

    public T2 getI2() { 
    return i2; 
    } 

    public String toString() { 
    return "{" + i1 + "," + i2 + "}"; 
    } 

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