2008-12-29 3 views
1

Я хочу получить набор записей из базы данных, выполнить rs.next(), а затем назначить результат этого переменной для перехода к методу, который будет использоваться эта запись, таким же образом, что я бы не назначил ее переменной и передал ее методу , есть ли способ сделать это? Я использую JAVA (1,5)присвоение определенной записи в ResultSet переменной


Спасибо за все ответы

Я не хочу, чтобы пройти весь Resultset к способу, только в текущей строке, но, как я понимаю, это невозможно

ответ

0

Вы хотите присвоить переменную значение rs.next()?

Боюсь, вы не сможете этого сделать. Вы можете получить ссылку из этого rs и обработать его другим методом (так же, как вы бы не присвоили его var)

Когда вы передаете rs в качестве аргумента методу, который именно вы делаете уже.

while(rs.next()) { 
    list.add(createFrom(rs)); 
} 

... 

public Object createFrom(ResultSet rs) { // Here rs is a copy of the reference in the while above. 
} 

У меня есть правильный вопрос?

+0

Технически вы можете, он возвращает bool: P –

+0

Теперь я понимаю, что мой вопрос был неправильным, так как rs.next() возвращает логическое значение, а не текущую строку. Если resultSet передается методу, передается ли он текущей строкой, такой же, как строка в вызывающем методе? – kilhra

+0

Да, это то же самое! Таким образом, вы не можете передать результирующий набор без возможности другого вызова next() –

0

Думаю, я понял вас сейчас. :)

Нет, это невозможно сделать так. ResultSet изменяет свое внутреннее состояние при каждом вызове на ResultSet.next(), поэтому сохранение ссылки на него не приведет к вам. Вы должны извлечь данные, которые хотите в какой-то пользовательский объект, и сохранить их.

CustomData cd = new CustomData(); 
cd.setString1(rs.getString(1)); 
cd.setInt1(rs.getInt(2)); 
... 

Вы можете хранить переменную cd и получить с обработкой вашего ResultSet.

1

Нет, не поддерживается из коробки, но, возможно, следующая идея может помочь вам:

ResultSetMetaData meta = rs.getMetaData(); 
while (rs.next()) { 
    Map<String,Object> row = new HashMap<String,Object>(); 
    for (int i = 1; i <= meta.getColumnCount(); ++i) { 
    row.put(meta.getColumnName(i), rs.getObject(i)); 
    } 
    processRow(row); 
} 

Проблема заключается в том, что вам нужно отливать значения из row -Map в processRow() и не будет работать для всех комбинаций типов/драйверов (BLOB, ...).

-1

Я часто нахожу Список> структура данных, очень полезная при работе с наборами результатов.

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