2017-07-17 150 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 
    }; 
相关问题