2010-11-23 3 views
0

저는 db4o를 사용하여 다른 객체를 안드로이드 응용 프로그램에 저장하고 있습니다. 나는 db4o 파일에 저장 한 Objects (여기에있는 연락처)로 sever 내용을 얻는다.DB4O 닫기() DB 지우기?

ObjectContainer mainDB = Db4oEmbedded.openFile(dbConfig(), DB_MAIN); 
mainDB.store(aContact); 

이제 DB에서 다시 가져 오는 쿼리를 직접 작성하면 작동합니다.

try { 
ObjectSet<Contact> result = db.queryByExample(Contact.class); 
contacts = new ArrayList<Contact>(result); 
} catch (Exception e) { 
e.printStackTrace(); 
} 

arraylist에서 반복 할 수 있으며 연락처가 있습니다. 이름과 다른 문자를 인쇄 할 수 있습니다. 하지만 지금은 드 DB를 닫으면 : 나도 같은 코드로 다시 열면

mainDB.close(); 

, contacts.size, 더 이상 안에 아무것도 없다() 0 문제점은 무엇입니까 반환? 어떤 생각? 미리 감사드립니다 ...

+0

에뮬레이터에서 실행 중이십니까? DB_MAIN은 어떤 모습입니까? 구성 (dbConfig())은 어떻게 생깁니 까? 이것은 대개 db4o가 데이터베이스 파일을 찾고 새 파일을 초기화 할 때 발생합니다. – Vagaus

+0

해당 링크입니까? http://developer.db4o.com/Forums/tabid/98/aft/10178/Default.aspx –

+0

에뮬레이터와 넥서스 모두에서 실행됩니다. DB의 위치에 대한 필드가 있습니다 : public final static String DB_MAIN = Environment.getExternalStorageDirectory() + "/circusMain.db4o"; 여기에 dbConfig()가 있습니다. – Alexis

답변

1

querybyexample이 아닌 SODA 쿼리를 시도하면 작동합니까?

+0

SODA 쿼리와 함께 작동하지 않습니다. – Alexis

0

Environment.getExternalStorageState()의 결과는 무엇입니까? 디렉토리에 문제가있을 수 있습니다. Context.getExternalFilesDir()을 디렉토리 또는 getExternalStoragePublicDirectory()로 시도하면 어떻게됩니까?

컨테이너를 열 때이 디렉토리를 사용하면 어떻게됩니까?

ctx.getDir ("data", 0) + "/"+ "db.file";

여기서 ctx는 앱 컨텍스트입니다.