2011-04-16 2 views
0

i проверено с использованием заглушек, которые загружаются драйвером, и соединение выполняется. мой метод, который запрашивает базу данных, выполняется без ошибок, но возвращает пустой набор результатов из 5 столбцов и 0 строк (которые я проверил посредством отладки). В тестовой базе данных есть 4 записи с 5 столбцами, и мой запрос предлагает вернуть все результаты. Я могу просто устать ... любое понимание того, что им не хватает? вот метод запроса. файл базы данных является доступом .mdbJAVA: Результаты поиска базы данных возвращают нулевые строки

public ArrayList fillResults() { ArrayList savedData = new ArrayList(); Заявление stmt = null; Результаты ResultSet = null;

try 
    { 
     stmt = conn.createStatement(); 
     results = stmt.executeQuery(SELECT_ALL); 
     while(results.next()) 
     { 
      for(short i = 0; i < 5; i++) 
      { 
       savedData.add(results.getString(i)); 
      } 
     } 

    } 
    catch(SQLException ex) 
    { 
     JOptionPane.showMessageDialog(null, ex.getMessage() + ": error during retrieval."); 
    } 
    finally 
    {   
     try 
     { 
      results.close(); 
      stmt.close(); 
     } catch (SQLException e){} 
    } 

    return savedData; 
} 
+0

Пожалуйста, проверьте, что вы используете правильную базу данных. Как выглядит код, который выполняет итерацию по набору результатов? –

+0

в то время как (results.next()) \t \t \t { \t \t \t \t для (короткого = 0; I <5; я ++) \t \t \t \t { \t \t \t \t \t savedData.add (результаты. GetString (я)); \t \t \t \t} \t \t \t} – Sinaesthetic

+0

первый столбец имеет индекс 1, а не 0 –

ответ

0

Вы не должны возвращать ResultSet. И класс персистентности не должен иметь Swing JOptionPane.

Попробуйте так:

package persistence; 

import java.sql.Connection; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.ArrayList; 
import java.util.List; 

public class JdbcDemo 
{ 
    private static final String SELECT_SAVED_DATA = "select * from saveData"; 

    private Connection connection; 

    public JdbcDemo(Connection connection) 
    { 
     this.connection = connection; 
    } 

    public List<String> getSavedData() throws SQLException 
    { 
     List<String> savedData = new ArrayList<String>(); 

     Statement stmt = null; 
     ResultSet rs = null; 
     try 
     { 
      stmt = this.connection.createStatement(); 
      rs = stmt.executeQuery(SELECT_SAVED_DATA); 
      while (rs.next()) 
      { 
       savedData.add(rs.getString(1)); // modify this as needed 
      } 
     } 
     finally 
     { 
      DatabaseUtils.close(rs); 
      DatabaseUtils.close(stmt); 
     } 

     return savedData; 
    } 
} 
+0

im, все еще получающий тот же набор результатов, возвращает 5 столбцов 0 строк. просто чтобы проверить, я изменил запрос, чтобы вернуть только 2 столбца; то набор результатов возвращался с 2 столбцами 0 строк. im lost – Sinaesthetic

+0

Если вы можете войти в базу данных с помощью другого клиента и увидеть строки, то в нем говорится, что вы не подключаетесь к базе данных, которая, по вашему мнению, вы есть. Проверьте URL-адрес вашего соединения и убедитесь, что вы видите строки с другим клиентом. Проверьте свои предположения - когда они не соответствуют тому, что, по вашему мнению, вы должны получать, в нем говорится, что вы обманываете себя ложными предположениями. – duffymo

+0

связь был хорошо. я сломал и начал с того, что вы разместили, и это сработало. не имеет для меня никакого смысла. Я попробовал еще раз, отправив результат на возвращение только из любопытства, но это все еще не сработало. Я не понимаю. но у меня сейчас это работает, nonthelist – Sinaesthetic

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