2016-05-12 13 views
0

私は現在、データベース全体を文字列として出力する2つの機能と、データベースの「TODO」列内で基準が満たされたときにのみデータを取得することになっているもう1つの機能以下の通り。Where with SQLite and android

 public String databaseToString() { 
    String dbString = ""; 
    SQLiteDatabase db = getWritableDatabase(); 
    String query = "SELECT * FROM " + TABLE_LIST + " WHERE 1"; 

    //Cursor points to a location in your results 
    Cursor c = db.rawQuery(query, null); 
    //Move to the first row in your results 
    c.moveToFirst(); 

    //Position after the last row means the end of the results 
    while (!c.isAfterLast()) { 
     if (c.getString(c.getColumnIndex("ToDo")) != null) { 
      dbString += c.getString(c.getColumnIndex("ToDo")); 
      dbString += " "; 
      dbString += c.getString(c.getColumnIndex("accFor")); 
      dbString += "\n"; 
     } 
     c.moveToNext(); 
    } 
    db.close(); 
    return dbString; 
} 

これは、データベース全体を印刷する文字列に変換する作業関数のコードです。以下は、これらの機能の両方が含まれて私はさらにmydatabasemanagerアプリに呼ばれてきたTODOが文字列の大学と同じデータベースからすべての値を取得することになっているなしワーキング機能

public String UniversityToString() { 
    String dbString = ""; 
    SQLiteDatabase db = getWritableDatabase(); 
    String query = ("SELECT " + COLUMN_TODO + COLUMN_FOR + " FROM " + TABLE_LIST + " WHERE "+ COLUMN_FOR + "=\"" + University + "\";"); 

    //Cursor points to a location in your results 
    Cursor c = db.rawQuery(query, null); 
    //Move to the first row in your results 
    c.moveToFirst(); 

    //Position after the last row means the end of the results 
    while (!c.isAfterLast()) { 
     if (c.getString(c.getColumnIndex("ToDo")) != null) { 
      dbString += c.getString(c.getColumnIndex("ToDo")); 
      dbString += " "; 
      dbString += c.getString(c.getColumnIndex("accFor")); 
      dbString += "\n"; 
     } 
     c.moveToNext(); 
    } 

    db.close(); 
    return dbString; 
} 

は、ここではこのコード原因となります私のアプリはそれを呼び出すアクティビティを開くとクラッシュする私はちょうど私が正しく私が必要なデータを選択するためにこれを修正するだろうと思っています。

+0

stackattraceでエラーを添付してください。 –

+0

文字列の連結がエラーを起こしやすいです。この質問を見れば、データベースをよりきれいに照会することができます。 http://stackoverflow.com/questions/5276099/how-to-format-the-where-clause-and-in-a-sqlite-query –

+0

@ cricket_007 致命的な例外:メイン java.lang.RuntimeException:Unableアクティビティを開始するにはComponentInfo {com.kai.todolist/com.kai.todolist.Main3Activity}:android.database.sqlite.SQLiteException:そのような列はありません:大学(コード1):コンパイル中:SELECT ToDo、accFor FROM List where accFor =大学 –

答えて

0

クエリの2つの列の間に少なくとも何かがあるはずです。

また、を追加する必要はありません。クエリーストリングの最後に