Посмотрите на этот пример:
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope,$http) {
var getJoke = function(){
return $http.get('http://api.icndb.com/jokes/random').then(function(res){
return res.data.value;
});
}
getJoke().then(function(res) {
console.log(res.joke);
});
});
Как вы можете видеть, getJoke
возвращает разрешенное обещание (оно разрешено при возврате res.data.value
). Таким образом, вы ждете, пока запрос $ http.get не будет завершен, а затем выполнится console.log (res.joke) (как обычный асинхронный поток).
Это plnkr:
Сначала вы должны использовать инструкцию next
.
ResultSet set = statement.executeQuery();
if (set.next()) {
userName = set.getString(1);
//your logic...
}
UPDATE
Как говорится в документации по Java 6
Курсор ResultSet первоначально располагается перед первой строкой; первый вызов метода next делает первую строку текущей строкой; второй вызов делает вторую строку текущей строкой и так далее.
blockquote>Это означает, что при выполнении предложения
ResultSet set = statement.executeQuery();
ResultSet
set
будет создан и указывается на строку перед первым результатом данных. Вы можете посмотреть его следующим образом:SELECT email, firstname FROM registrationinformation
email | firstname ____________________________________ 0 <= set points to here 1 email1@gmail.com | Email1 Person 2 foo@bar.com | Foo Bar
Итак, после открытия ResulSet вы выполняете метод
next
, чтобы перенести его на первый row.if(set.next())
Теперь
set
выглядит следующим образом.email | firstname ____________________________________ 0 1 email1@gmail.com | Email1 Person <= set points to here 2 foo@bar.com | Foo Bar
Если вам нужно прочитать все данные в ResultSet, вы должны использовать while вместо if :
while(set.next()) { //read data from the actual row //automatically will try to forward 1 row }
Если
set.next()
возвращает false, это означает, что не было строки для чтения, поэтому ваш цикл while будет завершен.Дополнительная информация здесь .
Вы должны установить указатель в правильное положение:
while(set.hasNext()){
set.next();
String a = set.getString(1);
String b = set.getString(2);
}
после инициализации ResultSet проверить, имеет ли курсор в нем строку или нет.
if(rs.next()){
//your all other works should go here
}
ResultSet set = statement.executeQuery ();
Итерировать набор, а затем получить String.
while(set.next()) {
me = set.getString(1); // <<---------- Line number 28
}