2017-01-26 19 views
0

Я новичок в Java, поэтому любая помощь приветствуется! Я написал метод, который возвращает содержимое таблицы в моей базе данных. Таблица называется «сообщениями». Я пытаюсь получить содержимое этих таблиц один столбец, который будет возвращен моим методом в виде строки, поэтому я могу отобразить его в приложении.Метод Java - Возврат содержимого столбца базы данных в строке

Вот мой метод:

public String readData() { 

    try { 
     String query = "select * from messages"; 
     PreparedStatement pstmt = ConnectionBuilder.buildConnection().prepareStatement(query); 
     ResultSet rs = pstmt.executeQuery("select * from messages"); 
     while (rs.next()){ 
     String data = rs.getString("MESSAGE"); 

      System.out.println(data); 
     } 

    } catch (Exception e) { 
     System.out.println(e); 
    } 
    return data; 

} 

System.out.println (данные); линия правильно отображает то, что я хочу:

Hello! 
Hello! 
Hello! 
Hello! 
Hello! 
Hello! 
hio 
hio 
hio 
Testerrr 

Но данные о возврате; говорит, что данные «не могут быть разрешены переменной»

Где я иду не так! Я попытался объявить переменную в верхней части метода, но он по-прежнему возвращаются нуль:

public String readData() { 
    String data = null; 
    try { 
     String query = "select * from messages"; 
     PreparedStatement pstmt = ConnectionBuilder.buildConnection().prepareStatement(query); 
     ResultSet rs = pstmt.executeQuery("select * from messages"); 
     while (rs.next()){ 
     data = rs.getString("MESSAGE"); 
     } 

    } catch (Exception e) { 
     System.out.println(e); 
    } 
    System.out.println(data); 
    return data; 

} 
+0

* Но возвращению данным; говорит, что данные «не могут быть разрешены переменной» ... Я попытался объявить переменную в верхней части метода, но все равно возвращает null *. Это две совершенно отдельные проблемы. – shmosel

ответ

0

data, безусловно, выходит за рамки, когда вы пытаетесь использовать его, чтобы вернуться. Моя первая мысль состоит в том, что вы должны объявить это раньше, но вы говорите, что попробовали это. Поэтому я дам вам альтернативу.

Вы можете поместить линию return data; в конец блока try и просто вернуть пустую строку или что-то в конце функции. (Единственный способ, по которому возврат в блоке try не будет выполняться, - это если бы возникло исключение, и вряд ли у вас были бы достоверные данные в любом случае.)

0

Из того, что я понял, каждый раз, когда цикл результата итерации он переопределяет значение данных, вы можете использовать StringBuilder для желаемого вывода. Это мое решение.

public String readData() { 
    StringBuilder str = new StringBuider(); 
    try { 
     String query = "select * from messages"; 
     PreparedStatement pstmt = ConnectionBuilder.buildConnection().prepareStatement(query); 
     ResultSet rs = pstmt.executeQuery("select * from messages"); 
     while (rs.next()){ 
     str.append(rs.getString("MESSAGE")); 
     } 

    } catch (Exception e) { 
     System.out.println(e); 
    } 
    System.out.println(str); 
    return str.toString(); 

} 

Надеется, что это помогает :)