안드로이드 개발 질문/답변
(글 수 45,052)
DB 접근이 안돼서 돌아버리겠습니다.ㅠㅠ
A 라는 클래서는 서피스뷰를 상속 받았습니다.
그런데 DB 를 사용하려 하는데....
액티비티를 상속 받아야지 제대로 사용이 가능하더라구요...ㅠㅠ
그래서 다른 방도로 액티비티를 상속 받는 B라는 클래스를 만들었습니다.
대충 코드는 다음과 같습니다.
B extends Activity{
public int func(){
여기서 다음과 같이 DB 접근
dbC = openOrCreateDatabase(DB_NAME, DB_MODE, null);
return value;
}
}
그래서 A라는 클래스에서
B.func를 호출하고 반환값을 받아
코드를 쭈~욱 전개하려 하는데...
이렇게 해도 문제는...
디비에 접근이 안됩니다..
A클래스에서는 서피스뷰를 상속 받아 디비에 제대로 접근이 안되고...
B클래스를 따로 만들어 거기서 디비에 접근을 해도 안됩니다...
(웬지 B클래스에서 public void onCreate(Bundle savedInstanceState) 함수 내부에서 디비에 접근해야 할 것 같은 느낌이...)
이를 어떻게 해결하면 좋을까요???ㅠㅠ
A클래스에서 액티비티를 상속 안하고 바로 디비에 접근할 수 있는 방법이 있으면 좋을텐데..
방법 아시는분 좀 알려주시면 감사하겠습니다.
2010.11.10 03:30:33
답변 감사합니다~^^
이거 보기 전에 해결을 했습니다.. ㅋ
전 일단 서피스뷰 호출하기 전에 DB 오픈해놓고
오픈한 디비변수를 서피스뷰 호출할 때 생성자로 같이 넘겨주어서 해결했습니다~^^
2010.11.11 04:01:37
androidHwan 님, 이 댓글을 보실지는 모르겠지만 지금 사용하시는 방법은 꽤 위험한 부분이 있습니다.
DB 는 오픈하시고 값을 읽고/쓰고/고치고/지우고 바로 닫으셔야 합니다.
프로그램 실행중에 별다른 문제가 없다 하더라도 그렇게 하셔야 합니다.
안드로이드 DB 의 기본 형상은
Cursor c = getContentResolver().query(~~~);
if (c != null) {
try {
쏼라쏼라....
} catch (Exception e) {
e.pr~~~~;
} finally {
c.close();
}
}
로 사용하시는게 가장 안전합니다.



