2013-09-16 1 views
1

У меня есть метод, который по существу делает следующее:Закрытие DataSource и использование курсора

Cursor cursor;         
cursor = myCard.queryRandomCard(this);    
cursor.moveToFirst(); 

В методе queryRandomCard:

DataSource datasource = new DataSource(context); 
datasource.open(); 
Cursor cursor = (SQL STATEMENT IS HERE AND WORKS); 
datasource.close(); 
return cursor; 

проблема заключается в том, что после retutn я получаю сообщение об ошибке при выполняя «cursor.moveToFirst()», в котором говорится, что «пул соединений был закрыт». ОДНАКО, если я удалю вызов «datasource.close()», тогда он отлично работает.

Мой вопрос: почему закрытие базы данных влияет на возвращаемый курсор? Связаны ли эти два человека ближе, чем я понял?

Спасибо

ответ

2

Курсор это не более чем итератора, который работает на таблицах базы данных. С помощью курсора вы не загружаете всю таблицу одновременно, но каждый раз, когда вам это нужно, вы загружаете одну строку, поэтому вам нужно открыть соединение с базой данных, чтобы это работало.

+0

хорошо там вы идете. Я думал, что он вернул весь набор. Это также означает, что до тех пор, пока вы используете один и тот же курсор, который должен иметь тот же объект DataSource, верно? – gjnave

+1

Вправо курсор связан с объектом DataSource, который его создал. Курсор использует объект DataSource для получения информации о базе данных и получения результатов. – Idipaolo

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