2012-06-04 6 views
2

SQLite 데이터베이스를 성공적으로 쿼리하고 그 결과를 커서에서 문자열로 변환하여 화면에 표시하는 간단한 코드가 있습니다.안드로이드에서 잘못된 SQLite 쿼리 처리하기

이제 내 문제는 앱 크래시를 만드는 잘못된 쿼리입니다. 잘못된 쿼리를 성공적으로 처리 할 수있는 방법이 있습니까? 가급적이면 내 앱이 충돌을 일으키지 않게하고 사용자를 홈 페이지로 리디렉션하고 경고의 축배를 표시하는 것이 좋습니다.

지금까지 검색을위한 나의 방법은 다음과 같습니다

public String search(DataBaseHelper myDB){ 
    SQLiteDatabase db = myDB.getReadableDatabase(); 
    Cursor cursor = db.rawQuery("SELECT BuildingColor, Room FROM LSBuildingsDB WHERE _id =" + newString, null); 

    cursor.moveToFirst(); 

    String data = cursor.getString(cursor.getColumnIndexOrThrow("BuildingColor")) + " " + 
        cursor.getString(cursor.getColumnIndex("Room")); 

    //Toast msg = Toast.makeText(getBaseContext(),data, Toast.LENGTH_SHORT); 
    //msg.show(); 

    cursor.close(); 

    return data; 

} 

답변

3
Cursor cursor = NULL ; 
try 
{ 
    cursor = db.rawQuery("SELECT BuildingColor, Room FROM LSBuildingsDB WHERE _id =" + newString, null); 
    if(cursor != NULL) 
    { 
     try { 
     if (cursor.moveToNext()) { 
      String data = cursor.getString(cursor.getColumnIndexOrThrow("BuildingColor")) + 
       " " + cursor.getString(cursor.getColumnIndex("Room")); 
     } else { 
      // Query result was empty, deal with it here. 
     } 
     } finally { 
     // Cursors should be closed 
     cursor.close(); 
     } 
    } 
} 
catch (SQLiteException e) // (Exception e) catch-all:s are bad mmkay. 
{ 
    //print exception 
} 
+0

감사합니다! 이것도 작동하고 더 완벽합니다. – Razgriz

1
Cursor cursor = null; 
String data = ""; 
try 
{ 
    cursor = db.rawQuery("SELECT BuildingColor, Room FROM LSBuildingsDB WHERE _id =" + newString, null); 
}catch (Exception e) { 
    // TODO: handle exception 
} 
+0

고마워! 둘 다 작동! – Razgriz

관련 문제