안드로이드 스튜디오와 녹스를 사용하고 있습니다.
주소록보기 버튼을 클릭하면 앱이 꺼지는 오류가 있는데 이유를 도저히 모르겠습니다
MainActivity.java
selectaddress.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addressview.setVisibility(View.VISIBLE);//리스트뷰 보여주기
if(dbHelper ==null){//dbhelper가 널이면 초기화
dbHelper = new DBHelper(MainActivity.this, dn, null, 1);
}
List people = dbHelper.getAllPersonData();//데이터 가져오기
addressview.setAdapter(new Adapter(people, MainActivity.this));//데이터를 리스트 뷰에 뿌리기
}
});
}
}
DBHelper.java
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class DBHelper extends SQLiteOpenHelper {
private Context context;
public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
this.context = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
// String 보다 StringBuffer가 Query 만들기 편하다고 한다.
StringBuffer sb = new StringBuffer();
sb.append(" CREATE TABLE TEST_TABLE ( ");
sb.append(" _ID INTEGER PRIMARY KEY AUTOINCREMENT, ");
sb.append(" NAME TEXT, CALL TEXT, MEMBER TEXT, ADDRESS TEXT, BIRTHDAY TEXT, NICKNAME TEXT)");
// SQLite Database로 쿼리 실행
db.execSQL(sb.toString());//추가,수정 또는 삭제를 실행시키라는 의미
Toast.makeText(context, "Table 생성완료", Toast.LENGTH_SHORT).show();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Toast.makeText(context, "버전이 올라갔습니다.", Toast.LENGTH_SHORT).show();
}
public void testDB() {
SQLiteDatabase db = getReadableDatabase();//읽기전용으로 데이터 베이스이용
}
public void addPerson(Person person) {
SQLiteDatabase db = getWritableDatabase();//데이터 베이스를 읽고 쓰기모드로 불러온다.
StringBuffer sb = new StringBuffer();
sb.append("INSERT INTO TEST_TABLE ( NAME, CALL, MEMBER, ADDRESS, BIRTHDAY, NICKNAME)");
sb.append("VALUES (?, ?, ?, ?, ?, ?)"); //_id는 자동으로 증가해서 넣지 않음
db.execSQL(sb.toString(), new Object[]{
person.getName(), person.getCall(), person.getMember(), person.getAddress(), person.getBirthday(),
person.getNickname()});
Toast.makeText(context, "저장완료", Toast.LENGTH_SHORT).show();
}
public List getAllPersonData() {
StringBuffer sb = new StringBuffer();
sb.append("SELECT _ID, NAME, CALL, MEMBER, ADDRESS, BIRTHDAY, NICKNAME FROM TEST_TABLE");
SQLiteDatabase db = getReadableDatabase();//데이터 베이스를 읽기모드로 불러온다.
Cursor cursor = db.rawQuery(db.toString(), null);
List people = new ArrayList();
Person person = null;
while (cursor.moveToNext()) {//moveToNext가 끝날때까지
person = new Person();
person.set_id(cursor.getInt(0));
person.setName(cursor.getString(1));
person.setCall(cursor.getString(2));
person.setMember(cursor.getString(3));
person.setAddress(cursor.getString(4));
person.setBirthday(cursor.getString(5));
person.setNickname(cursor.getString(6));
people.add(person);
}
return people;
}
}