如何在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 );
}
}
答案 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;
}
如果本机集合不适合您,则需要自定义对象才能执行此操作。即返回课程。