엑티비티 실행이 안됩니다(안드로이드, 데이터베이스)(초보)
조회수 1276회
public class DBHelperForSearched extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "searched";
public static final String TABLE_NAME = "searched_table";
public static final String COL1 = "ID";
public static final String COL2 = "ITEM1";
public static final String COL3 = "ITEM2";
DBAdapterForSearched dbAdapter;
Cursor cursor;
ListView list;
public DBHelperForSearched(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String createTable = "CREATE TABLE " + TABLE_NAME + "(ITEM1 TEXT primary key," + " ITEM2 TEXT)";
db.execSQL(createTable);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP IF TABLE EXISTS " + TABLE_NAME);
onCreate(db);
}
public boolean insertDataToSearched(String item1, String item2) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL2, item1);
contentValues.put(COL3, item2);
long result = db.insert(TABLE_NAME, null, contentValues);
if (result == -1) {
return false;
} else {
return true;
}
}
public Cursor getListContents(){
SQLiteDatabase db = this.getWritableDatabase();
Cursor data = db.rawQuery("SELECT * FROM " + TABLE_NAME, null);
return data;
}
}
db헬퍼 코드입니다. 한 영역을 primary key로 정해 db에 중복된 primary key값 없이 저장하는 액티비티를 만들고 있는데, 어째서인지 해당 액티비티의 실행이 계속 중지가 됩니다. 무엇이 문제인지를 잘 모르겠습니다. 조언 부탁드립니다.
아래로는 위 db를 활용하는 액티비티입니다.
--------------------------------------------------조언해주신대로 수정했습니다-----------------------------------------------
public class Searched extends AppCompatActivity {
static String DATABASE_NAME;
static String TABLE_NAME;
static int DATABASE_VERSION;
private static final String TAG = "TestDataBaseActivity";
private DBHelperForSearched db;
ListView list;
public String data_city, data_country;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.searched_list);
db = new DBHelperForSearched(this);
list = (ListView) findViewById(R.id.searched_list);
db.getListContents();
final ArrayList<InfoClassForSearched> weatherList = new ArrayList<InfoClassForSearched>();
Cursor data = db.getListContents();
if (data.getCount() == 0) {
Toast.makeText(this, "There are no contents in this list!", Toast.LENGTH_LONG).show();
} else {
while (data.moveToNext()) {
InfoClassForSearched newInfo = new InfoClassForSearched(data.getString(0), data.getString(1));
weatherList.add(newInfo);
DBAdapterForSearched dbAdapter = new DBAdapterForSearched(this, weatherList);
list.setAdapter(dbAdapter);
}
}
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
InfoClassForSearched selectedInfoClass = weatherList.get(position);
data_city = selectedInfoClass.getCity();
data_country = selectedInfoClass.getCountry();
Intent intent = new Intent(Searched.this, MainActivity.class);
intent.putExtra("data_city", data_city);
intent.putExtra("data_country", data_country);
setResult(Activity.RESULT_OK, intent);
finish();
}
});
}
}
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
data.getString(1), data.getString(2)를 data.getString(0), data.getString(1)로 수정해보세요
sqlite 테이블에는 item1, item2 column만 존재하는데 column index 2에 접근하려고 하니까 에러가 나는 것 같습니다.
----- 추가 -------
String createTable = "CREATE TABLE " + TABLE_NAME + "(ITEM1 TEXT primary key," + " ITEM2 TEXT)";
여기에서 "(ITEM1 .... 이 부분을
" (ITEM1... 이렇게 쌍따옴표 뒤에 한 칸 스페이스 공백을 주고 실행해보세요.
- 그 부분을 수정했더니 다른 오류가 하나가 더 나왔습니다 알 수 없는 사용자 2018.4.26 16:42
- E/SQLiteDatabase: Error inserting ITEM2=KR ITEM1=Seoul 알 수 없는 사용자 2018.4.26 16:43
- 위의 에러가 하나 더 발견되었는데 insert에서 어떤 부분이 문제가 있는 걸까요...? 알 수 없는 사용자 2018.4.26 16:43
- insert하는 부분의 코드 첨부해주시면 감사하겠습니다. 주동혁 2018.4.26 16:47
- 위에 있는 코드에서 insertDataToSearched 메소드로 db에 데이터를 넣고 있습니다 알 수 없는 사용자 2018.4.26 16:56
- 답변 추가 했습니다. 확인해주세요. 주동혁 2018.4.26 16:58
- insert의 문제는 distinct db를 위해 겹치는 primary key를 받아들이지 않는 것으로 판명났습니다. 알 수 없는 사용자 2018.4.26 17:04
- 아래쪽 코드에서 읽어오는 것에 문제가 있는 것 같습니다.... 알 수 없는 사용자 2018.4.26 17:05
- 잘 처리되었습니다. 감사합니다 알 수 없는 사용자 2018.4.27 13:12
- 해결하셨다니 다행이네요. 주동혁 2018.4.27 13:51
댓글 입력