에러가 난다면, 왜 에러가 나는지 로그가 있습니다. 로그캐에서 확인하셔서 에러메세지에 따라 코드를 수정하셔야 겠죠.
님이 데이터를 처리하기 원하는 클래스에서 액티비티에서 하듯이 같은 식으로 DatabaseHelper 객체를 하나 만드시고 필요에 맞게 DatabaseHelper의 getAllData, insertData, updateData, deleteData를 호출하시면 됩니다.
자바의 클래스를 이용할 수 있다면 해결하실 수 있는 문제로 보이는데요.
DatabaseHelper 클래스 내부를 들여다 보면 실제는 User정보를 처리하는 DAO로 보입니다. 따라서 DatabaseHelper보다는 UserDao정도가 적절한 이름으로 보입니다. 그리고 메소드들을 보면 원시타입을 사용하고 있는데, getAllData는 List<User>를 리턴하고 insertData(User user), updateData(User user) 와 같이 처리하는 것이 뷰에게 Dao가 어떻게 내부적으로 동작하는지에 대한 내용을 알게 할 필요가 없기 때문에 좀 더 나아보입니다. 그리고 deleteData는 deleteById(String id) 정도로 하는게 메소드 이름을 보고 다르게 이해하는 오해를 줄일 수 있을 것 같아 보입니다.
public class User {
private final String id;
private final String name;
private final int age;
private final String phone;
// Constructor, Getters 필요
}
// DatbaseHelper -> UserDao
public List<User> getAllData(){
List<User> result = new ArrayList<>();
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from "+TABLE_NAME,null);
StringBuffer buffer = new StringBuffer();
while(cursor.moveToNext()){
String id = es.getString(0);
String name = res.getString(1);
int age = res.getInt(2);
String phone = res.getString(3);
User user = new User(id, name, age, phone);
result.add(user);
}
return result;
}
추가로 dabase 처리는 I/O에 해당하므로 백그라운드 쓰레드 처리한다면 더 좋을 것 같습니다.