如何只使用一种方法返回两个不同的值?

时间:2013-05-17 20:13:55

标签: java mysql

如何在MySQL表中分别返回两种不同类型的列(int,string)?我尝试过使用这段代码,但我无法弄明白。请你好,你能告诉我什么是错的吗?

请注意:::我想返回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 );
    }
}

6 个答案:

答案 0 :(得分: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 :(得分:1)

您可以返回一个Array,一个List(或其他面向集合的数据结构),或者您可以返回一个具有两个属性的类型(类或结构)实例,每个属性对应一个您希望返回的内容。 / p>

Java,Javascript,C#等语言不允许多个返回的项目。你必须返回包含任何与你相关的东西。

答案 2 :(得分: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 + "}";
  }

}

答案 3 :(得分:0)

在Java和大多数语言中,您不能从一个方法返回两个值。替代方法是传入一个对象,并更改对象中的值,或将返回值包装为对象。或者您可以返回一些集合,例如List,Set或Map。

答案 4 :(得分:0)

您的选择是定义一个具有您想要的字段的类(如Skyhawk上尉的示例),或者返回一个Object [],它可以简单地在其中携带Integer和String对象。一个例子是

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

这很容易但也很“懒惰”,因为大多数人都不鼓励使用它。当你返回一个对象数组时,你会丧失像Java这样的(主要是)强类型语言的许多好处。

答案 5 :(得分:0)

我使用HashMap执行此操作:

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

如果本机集合不适合您,则需要自定义对象才能执行此操作。即返回课程。