2012-06-04 65 views
2

我有一個簡單的代碼,它能夠成功查詢SQLite數據庫,並將結果從遊標轉換爲字符串以便在屏幕上顯示它。處理Android中的無效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