2012-04-03 3 views
0

削除機能を有効にしようとしている場合、ブール値が返されます。ユーザーは番号を入力し、その番号の行があればその行を削除します。私が実行している問題は、無効な番号を入力してもエラーは発生しないということです。 Eclipseはdb.deleteステートメントの周りにtry catchを強制しました。しかし、私はデバッガを使用し、入力し、不正な番号try文が動作し、catch部分をスキップします。私はそれが動作しない場合、削除ステートメントを返すブール値を持っている方法を把握しようとしています、このように私はエラーを示すトーストを生成するために文を使用することができます。 はここでここでのtry catch文が警告ダイアログされているDELETEステートメントデータベースの削除ステートメントを取得しようとすると、動作しているかどうかのブール値が返されます。

public void deleteInspection(long _id)throws Exception 
{ 
    db.delete(DB_TABLE,"_id=" + _id , null); 

} 

ためのコードです。

new AlertDialog.Builder(this) 
      .setTitle("Delete a report") 
      .setMessage("Enter the Id number of the report to delete") 
      .setView(addView) 
      .setPositiveButton("Submit", 
        new DialogInterface.OnClickListener() { 

         public void onClick(DialogInterface dialog, 
           int which) { 
          String id = idNum.getText().toString(); 
          long primaryId = Long.parseLong(id); 
          info.open(); 
          try { 
           info.deleteInspection(primaryId); 
          } catch (Exception e) { 
           // TODO Auto-generated catch block 
           e.printStackTrace(); 
          }       
          info.close(); 
          dbInfo(); 
         } 
        }) 
      .setNegativeButton("Cancel", 
        new DialogInterface.OnClickListener() { 

         public void onClick(DialogInterface dialog, 
           int which) { 
          // TODO Auto-generated method stub 

         } 
        }).show(); 
} 

答えて

2

db.delete()影響を受けた行の数である、intを返すべきです。少しあなたのコードを変更し、これはかなり容易になる:

public boolean deleteInspection(long _id)throws Exception 
{ 
    int numResults = 0; 
    numResults = db.delete(DB_TABLE,"_id=" + _id , null) 
    return (numResults < 1); 
} 

<preaching>すべての例外(catch (Exception e)を)引くサイドノート、毛布としては、通常ひんしゅくを買うされ、より良いケースバイケースですべての問題を処理するために、あなたのキャッチブロックは、表面の下に特に悪いバグを隠している可能性があります</preaching> :)。

+0

ありがとう、私は本当の偽としてintを使用することを忘れていました。 – Aaron