Java:MYSQL ResultSet没有获取值

时间:2014-07-19 22:07:01

标签: java mysql

我有一个方法,它只返回一个字符串值。首先需要连接到mysql数据库@ db4free.net(我检查并确保连接时没有问题)。然后是PreparedStatement,其中执行查询SELECT * FROM ip。 ResultSet存储查询结果,但是当我执行result.getString(1)时,它不返回任何内容。这是我下面的代码(类Client扩展Connector btw)

public String ObtainServerIP(){
    if(MYSQLConnection!=null){
        try{
            PreparedStatement state = MYSQLConnection.prepareStatement("SELECT * FROM "+TableName);
            result = state.executeQuery();
            result.next();
            return result.getString(1);
        }catch(Exception e){
            return ""+e;
        }
    }
    return "wot m8";
}

上面的代码在Connector类中。

下面的代码是需要打印出来的东西。 (我甚至在结果集上尝试了索引0,但仍然没有。)

public void run(){
    while(AppRunning){
        if(DatabaseConnection){
            System.out.println(ObtainServerIP());
            AppRunning=false;
        }
    }
}

是的,循环工作正常,DatabaseConnection为true,循环使它进入if语句。但是没有任何打印出来。即使是例外情况也不会被打印出来。这是我的MYSQL数据库的快照:

enter image description here

1 个答案:

答案 0 :(得分:1)

最好在if语句之前创建一个String,并且getString的参数必须是表的属性。如果你只想获得1行,请使用if语句为result.next(),在其他情况下使用while。试试这个:

public String ObtainServerIP(){
String text;

if(MYSQLConnection!=null){
    try{
        PreparedStatement state = MYSQLConnection.prepareStatement("SELECT * FROM "+TableName);
        result = state.executeQuery();
        if (result.next()) {
            text = result.getString("InternetProtocol");
        }
    }catch(Exception e){
        text = e.getMessage();
    }
}
return text;

}