如何从Sqlite数据库获取数据,然后将其输入TextViews

时间:2017-07-17 18:19:06

标签: android sqlite android-sqlite

我尝试将数据输入到Sqlite数据库中,然后在将数据输入textViews时将其输出使用,但是当我按下按钮操作时它会崩溃。我试着看看它在Onclick中出错的地方,它说"引起:java.lang.IllegalArgumentException:column' Color'不存在"但我不确定是什么错误。

@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));
    }

1 个答案:

答案 0 :(得分:0)

在投影中,您有两次COLUMN_AGE并使用此列进行选择,因此您没有结果COLUMN_COLOUR

  String[] projection = {
            CarsEntry.COLUMN_NAME,
            CarsEntry.COLUMN_AGE,
            CarsEntry.COLUMN_AGE
    };