2015-11-30 4 views
0

Я пытаюсь выбрать все отдельные значения одного столбца в таблице, однако он ничего не возвращает. Вещи, я проверил:Java, специфический запрос MySQL ничего не возвращает

  1. Права доступа - аккаунт Я использую имеет разрешение делать все
  2. Query правильно - я печатаю запрос, и он работает в PhpMyAdmin
  3. На самом деле связано - это соединение к правильной базе данных, потому что работает «SELECT * FROM users».
  4. Исключение - проверено на общие исключения и их не было.

Код:

public ResultSet execute(String sql) { 
    try { 
     Statement stmt = conn.createStatement(); 
     ResultSet rs = null; 
     System.out.println(sql); 
     if (stmt.execute(sql)) { 
      rs = stmt.getResultSet(); 
     } 
     ResultSetMetaData meta = rs.getMetaData(); 
     int length = meta.getColumnCount(); 
     System.out.println("Print results"); 
     while (rs.next()) { 
      for (int i=1; i< length; i++) { 
       System.out.println(rs.getString(i)); 
      } 
     } 
     System.out.println("DONE"); 
     return rs; 

    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     System.out.println("SQL: " + e.getSQLState()); 
     System.out.println("2: " + e.getMessage()); 
     System.out.println("3: " + e.getErrorCode()); 
    } 
    System.out.println("Nothing found"); 
    return null; 
} 

Отпечаток из:

Подключение к базе данных ВЫБРАТЬ userName ИЗ users результатов печати DONE 1

1-это количество столбцов напечатанных за пределами функции. Очевидно, что запрос не получает отдельных значений, это просто более простой запрос, который я пытался опробовать. Есть идеи? Спасибо

ответ

0

Столбцы в ResultSet индексируются начиная с 1 и getColumnCount возвращает количество выбранных столбцов.

Таким образом, вам нужно заменить ваш цикл, чтобы перейти от 1 до length включительно и не исключают:

for (int i = 1; i <= length; i++) { // <-- inclusive here 
    System.out.println(rs.getString(i)); 
} 
Смежные вопросы