2016-05-07 5 views
-2

私はAndroid開発の初心者です。データベースを作成し、その中に要素を挿入しようとしています(putData())。
アプリは何のエラーもなく実行されていますが、要素は表示されず、黒いアクティビティのみ表示されます。私が間違って何が起こっているか分からない
SQLiteデータベースを表示

DBHelperクラス

public class DBHelper extends SQLiteOpenHelper { 

    public static final String DATABASE_NAME = "food.db"; 
    public static final String TABLE_NAME = "food_calorie"; 
    public static final String COL_1 = "ID"; 
    public static final String COL_2 = "NAME"; 
    public static final String COL_3 = "CALORIE"; 

    public DBHelper(Context context) { 
     super(context, DATABASE_NAME, null, 1); 
     SQLiteDatabase db = this.getWritableDatabase(); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL("create table " + TABLE_NAME +" (ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,CALORIE INTEGER)"); 
     putData(); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME); 
     onCreate(db); 
    } 

    public void putData(){ 
     insertData("Apple", 168); 
     insertData("Mango", 194); 
    } 

    public void insertData(String name, int calorie){ 
     SQLiteDatabase db=this.getWritableDatabase(); 
     ContentValues CV=new ContentValues(); 

     CV.put(COL_2,name); 
     CV.put(COL_3,calorie); 
     db.insert(TABLE_NAME,null,CV); 
     db.close(); 
    } 


    public String printDB(){ 
     String dbString=""; 
     SQLiteDatabase db=this.getWritableDatabase(); 
     String query="SELECT * FROM " + TABLE_NAME + " WHERE 1"; 

     Cursor c= db.rawQuery(query,null); 

     //Move to the first row in your result 
     c.moveToFirst(); 

     while(!c.isAfterLast()){ 
      if(c.getString(c.getColumnIndex("TABLE_NAME"))!=null){ 
       dbString+= c.getString(c.getColumnIndex("TABLE_NAME")); 
       dbString += "\n"; 
      } 
     } 
     db.close();; 
     return dbString; 
    } 
} 

MinActivityクラス

public class MainActivity extends AppCompatActivity { 

    DBHelper MyDb; 
    TextView showDBText; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     showDBText=(TextView) findViewById(R.id.showDB); 
     MyDb = new DBHelper(this); 
     printDatabase(); 
    } 
    // Buckys Video 54 
    public void printDatabase(){ 

     //printDB is a function in DBHelper 
     String dbString = MyDb.printDB(); 
     showDBText.setText(dbString); 

    } 
} 

XMLファイル

を助けてください210
+0

は '、あなたの妄想で' ... + "WHERE 1" の意味である私たちに説明してもらえます! –

+0

ここで、1はすべての条件が満たされていることを意味します。 私はthenewbostonからメソッドをコピーしました。初心者のためのアプリ開発 - 53 - データベースの結果を印刷 –

+0

その**ばかげた、役に立たない、潜在的に危険な状態を**削除**してください!単に** ** WHERE条件なしでは、すべての条件が満たされます。 –

答えて

1

あなたのエラーが(離れて恐ろしいWHERE 1句から)です:

if(c.getString(c.getColumnIndex("TABLE_NAME"))!=null){ 
       dbString+= c.getString(c.getColumnIndex("TABLE_NAME")); 

あなたは列名、ないテーブル名を指定する必要があります。

すなわち:

if(c.getString(c.getColumnIndex("NAME"))!=null){ 
       dbString+= c.getString(c.getColumnIndex("NAME")); 
+0

"NAME"で変更しましたが、アプリの変更はありません。 –

+0

'printDB()'をデバッグすると、私の修正後に結果が表示されるはずです。または何らかの理由でテーブルが空です。あなたのアプリをアンインストールして再実行してみてください。 –

関連する問題