java.lang.NumberFormatException: 无效 int: "" in cursor in Android

java.lang.NumberFormatException: Invalid int: "" in cursor in Android

我看了类似的问题,但没有找到答案。

我收到一个错误:

java.lang.NumberFormatException: Invalid int: "" 

在线显示:

    Place place = new Place(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2), cursor.getDouble(3), cursor.getDouble(4), cursor.getInt(5));

这是我的代码:

    Place getMyPlace(String sql, int id){
        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = db.query(TABLE_PLACES, new String[] {PLACES_COLUMN_ID, PLACES_COLUMN_NAME,
                PLACES_COLUMN_DESCRIPTION}, PLACES_COLUMN_ID + "=?",
                new String[] { String.valueOf(id) }, null, null, null, null);

        if (cursor != null)
            cursor.moveToFirst();

        Place place = new Place(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2), cursor.getDouble(3), cursor.getDouble(4), cursor.getInt(5));
        return place;
    }

它是来自class地方的构造函数:

public Place(int id, String placeName, String placeDescription, double latidute, double longtidute, int visited){
    this._id = id;
    this._placeName = placeName;
    this._placeDescription = placeDescription;
    this._latidute = latidute;
    this._longtidute = longtidute;
    this._visited = visited;
}

以及来自活动的方法:

public void getPlace(int id){
    DataBaseHelper dbHelper = new DataBaseHelper(this.getApplicationContext());
    String sql ="SELECT Name, Description FROM Places WHERE _id=?" ;
    Place myPlace = dbHelper.getMyPlace(sql, id); 
}

有人知道哪里出了问题吗?

改变你的db.query

Cursor cursor = db.query(TABLE_PLACES, new String[] {PLACES_COLUMN_ID, 
            PLACES_COLUMN_NAME, PLACES_COLUMN_DESCRIPTION}, PLACES_COLUMN_ID + "=?",
            new String[] { String.valueOf(id) }, null, null, null, null);

至此

Cursor cursor = db.query(TABLE_PLACES, null, PLACES_COLUMN_ID + "=?",
            new String[] { String.valueOf(id) }, null, null, null, null);

可能数据库中有一个值在这里是空的:

  Integer.parseInt(cursor.getString(0))

这是您的地点对象的第一个参数。你必须确定这是一个数字,你可以这样做:

  int numberYouNeed = 0;
  String yourString = cursor.getString(0);

  if(yourString!=null&&!yourString.equals("")){
  numberYouNeed = Integer.parseInt(yourString);
  }

  Place place = new Place(numberYouNeed, cursor.getString(1), cursor.getString(2), cursor.getDouble(3), cursor.getDouble(4), cursor.getInt(5))