2017-07-17 77 views
0

我試圖將數據輸入到Sqlite數據庫,然後在我將數據輸入到textViews中時使用它,但當我按下按鈕動作時它會崩潰。我試着看看在Onclick出錯的地方,它說「由於:java.lang.IllegalArgumentException:column'Color'不存在」,但我不確定有什麼問題。如何從Sqlite數據庫獲取數據,然後將其輸入到TextViews中

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mDbHelper = new CarsDbHelper(this); 
     SQLiteDatabase db = mDbHelper.getWritableDatabase(); 
     ContentValues values = new ContentValues(); 
     values.put(CarsEntry.COLUMN_NAME,current_car_name); 
     values.put(CarsEntry.COLUMN_COLOUR,current_car_colour); 
     values.put(CarsEntry.COLUMN_AGE,current_car_age); 
     long newRowId = db.insert(CarsEntry.TABLE_NAME, null, values); 
    } 

    public void button (View view) { 
     mDbHelper = new CarsDbHelper(this); 
     SQLiteDatabase db = mDbHelper.getReadableDatabase(); 
     String[] projection = { 
       CarsEntry.COLUMN_NAME, 
       CarsEntry.COLUMN_AGE, 
       CarsEntry.COLUMN_AGE 
     }; 
// Filter results WHERE "title" = 'My Title' 
     String selection = CarsEntry.COLUMN_NAME + " = ?"; 
     String[] selectionArgs = { current_car_name }; 

// How you want the results sorted in the resulting Cursor 
     Cursor cursor = db.query(
       CarsEntry.TABLE_NAME,      // The table to query 
       projection,        // The columns to return 
       selection,        // The columns for the WHERE clause 
       selectionArgs,       // The values for the WHERE clause 
       null,          // don't group the rows 
       null,          // don't filter by row groups 
       null          // The sort order 
     ); 

     while(cursor.moveToNext()) { 
      //Name 
      current_car_name = cursor.getString(cursor.getColumnIndexOrThrow(CarsEntry.COLUMN_NAME)); 
      //Colour 
      current_car_colour = cursor.getString(cursor.getColumnIndexOrThrow(CarsEntry.COLUMN_COLOUR)); 
      //Age 
      current_car_age = cursor.getInt(cursor.getColumnIndexOrThrow(CarsEntry.COLUMN_AGE)); 
     } 
     cursor.close(); 

     TextView car_name = (TextView) findViewById(R.id.name); 
     car_name.setText(current_car_name); 

     TextView car_colour = (TextView) findViewById(R.id.colour); 
     car_colour.setText(current_car_colour); 

     TextView car_age = (TextView) findViewById(R.id.age); 
     car_age.setText(String.valueOf(current_car_age)); 
    } 
+0

它說你沒有名爲'Colour'列。也許你寫錯了列名 – SiSa

+0

但我創建了一個最終的字符串名稱,它的值爲字符串顏色 –

+0

如果以編程方式創建數據庫,請從設備/模擬器中刪除應用程序並再次檢查。如果它不起作用,請包含您的dbhelper類。 – SiSa

回答

0

在投影你有兩次COLUMN_AGE和你做選擇與此列,所以你不能在結果COLUMN_COLOUR有不

String[] projection = { 
      CarsEntry.COLUMN_NAME, 
      CarsEntry.COLUMN_AGE, 
      CarsEntry.COLUMN_AGE 
    }; 
相關問題