2016-07-17 7 views
0

データベースには、フィールド 'ID'、 '名前'、 'ISSN'、 'IMPACTFACTOR'の1つのテーブルがあります。 UIには、手動でデータを追加するためのADDボタン、すべてのデータを表示するLISTボタン、検索ボタンがあり、名前を入力して検索することができます。私はテキストフィールドに名前を入力し、検索を入力すると、AlertDialogボックスなしの結果と私はlogcatの出力を取得します。名前で検索するため[email protected]AlertDialogが単一のデータを取り出す際にデータを表示しない

コードを

public class NameSearch extends Activity { 

    DatabaseHelper myDb; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.name_activity); 
     myDb = new DatabaseHelper(this); 
    } 

    public void onNameSearch(View view) { 
     Intent i = new Intent(this, SearchResult.class); 

     final EditText name = (EditText) findViewById(R.id.nameInput); 
     String nameSearch = name.getText().toString(); 
     Cursor cursor = myDb.getNameSearchData(nameSearch); 
     //to see what values does cursor get 
     String valueReturned = cursor.toString(); 
     Log.d("ADebugTag", "Value: " + valueReturned); 
     if (cursor != null && cursor.getCount() > 0) { 
      Toast.makeText(this, "Nothing Found", Toast.LENGTH_LONG).show(); 
      return; 
     } 
     StringBuffer buffer = new StringBuffer(); 
     while(cursor.moveToNext()){ 
      buffer.append("ID:" + cursor.getString(0)+ "\n"); 
      buffer.append("NAME:").append(cursor.getString(1)).append("\n"); 
      buffer.append("ISSN:" + cursor.getString(2)+ "\n"); 
      buffer.append("IMPACTfACTOR:").append(cursor.getString(3)).append("\n\n"); 
     } 
      //i.putExtra("newMessage", finalValue); 
     showMessage("Data Found", buffer.toString()); 
      // startActivity(i); 
     } 

    public void showMessage(String title , String Message){ 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setCancelable(true); 
     builder.setTitle(title); 
     builder.setMessage(Message); 
     builder.show(); 
    } 
    }   

コードDataBaseHelper用

public class DatabaseHelper extends SQLiteOpenHelper { 

    public static final String DATABASE_NAME = "journal.db"; 
    public static final String TABLE_NAME = "journal"; 
    public static final String COL_1 = "ID"; 
    public static final String COL_2 = "NAME"; 
    public static final String COL_3 = "ISSN"; 
    public static final String COL_4 = "IMPACTFACTOR"; 

    public DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, 1); 

    } 

    @Override 
    public void onCreate(SQLiteDatabase sqLiteDatabase) { 
     sqLiteDatabase.execSQL(" CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT , NAME TEXT , ISSN TEXT , IMPACTFACTOR REAL) "); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { 
     sqLiteDatabase.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME); 
     onCreate(sqLiteDatabase); 
    } 

    public boolean insertData(String name, String issn , String impactfactor){ 
     SQLiteDatabase sqLiteDatabase = this.getWritableDatabase(); 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put(COL_2,name); 
     contentValues.put(COL_3,issn); 
     contentValues.put(COL_4,impactfactor); 
     long result = sqLiteDatabase.insert(TABLE_NAME, null, contentValues); 
     return result != -1; 

    } 
    public Cursor getAllData(){ 
     SQLiteDatabase sqLiteDatabase = this.getWritableDatabase(); 
     return sqLiteDatabase.rawQuery("SELECT * FROM " + TABLE_NAME, null); 
    } 

    public Cursor getNameSearchData(String name){ 
     SQLiteDatabase sqLiteDatabase = this.getReadableDatabase(); 
     Cursor res1 = sqLiteDatabase.rawQuery("SELECT * FROM "+ TABLE_NAME +" WHERE NAME = '"+ name +"'",null); 

      //to get the result of res1 
     String valueReturned = res1.toString(); 
     Log.d("ADebugTag", "Value: " + valueReturned); 

     return res1; 

    } 

} 

ソリューションを提供してください

1.MobileScreenshot 2.LogcatTrace

+0

完全なログトレースを表示してください! –

答えて

0
if (cursor != null && cursor.getCount() > 0) { 
    Toast.makeText(this, "Nothing Found", Toast.LENGTH_LONG).show();    
    return; 
} 

あなたはおそらく "が見つかり何もない" ための条件はcursor.getCount() == 0なく> 0になりたいです。

私はlogcatに出力を得る:[email protected]

をはい、それはCursortoString()を呼び出すときに何を得るのです。デバッグの目的でCursorをログに記録する場合は、DatabaseUtils#dumpCursor()をご覧ください。

+0

上記の修正を含むNameSerch.javaのその他の変更は、ダイアログボックスの結果を得るために必要ですか? – ArnavvG

+0

アプリのデバッグを検討して、期待どおりの動作をしないかを確認してください。 – laalto

+0

laaltoに感謝します。あなたのソリューションは私のAlertDialog Box上で望ましい出力を得ます。 – ArnavvG

関連する問題