【问题标题】:SQLite delete last string - app crashedSQLite 删除最后一个字符串 - 应用程序崩溃
【发布时间】:2018-06-04 19:47:34
【问题描述】:

谁能帮我指出错误是什么?我放这个后我的应用程序崩溃了。

public String getLastString() {

String selectQuery = "SELECT  * FROM " + TABLE_NAME;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);

cursor.moveToLast();
LastString = cursor.getString(0);

cursor.close();
db.close();
return LastString;
}


public void deleteLastMessage() {
    SQLiteDatabase db = this.getWritableDatabase();
    db.delete(TABLE_NAME,null ,new String[] { getLastString() });
    db.close();
}

【问题讨论】:

  • 能否添加错误日志和完整代码?
  • 你没有在删除查询中设置 where 条件
  • My app crash after I put this 与问题分享您的崩溃日志
  • @Nilu 刚刚附上崩溃日志和完整代码

标签: android sqlite


【解决方案1】:

试试这个

public void deleteLastMessage() {
    SQLiteDatabase db = this.getWritableDatabase();
    db.delete(TABLE_NAME,"COLNAME = ?",new String[] { getLastString() });
    db.close();
}

【讨论】:

  • 你只需要指定一个条件,否则尝试db.delete(TABLE_NAME,null,null);它将删除该表中的每个项目,条件将删除具有该条件的项目
  • @Anthony 它将删除表格中的所有详细信息
  • 我只想删除最后一个条目
【解决方案2】:

我已经解决了,谢谢大家

// Deleting single contact
    public void deleteLastMessage(SubliminalMsg a) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(TABLE_NAME, KEY_MSG + " = ?",
                new String[] { String.valueOf(a.get_message()) });
        db.close();
    }

    public String getLastString() {

    String selectQuery = "SELECT  * FROM " + TABLE_NAME;
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    cursor.moveToLast();
    LastString = cursor.getString(0);

    cursor.close();
    db.close();
    return LastString;
}

活动中

 public void delete(View v) {
    LastMessage = new SubliminalMsg(db.getLastString());
    db.deleteLastMessage(LastMessage);
    displayText();
}

【讨论】:

    【解决方案3】:

    缺少Where子句

    SQLiteDatabase db = this.getWritableDatabase();
    db.delete(TABLE_NAME,"COLUMNNAME = '"+ getLastString()+"'",null});
    db.close();
    

    【讨论】:

    • 使用更新后的答案将 COLLUMNNAME 替换为您的列名。
    • 崩溃报告是什么。发布问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 2016-08-08
    • 2018-05-27
    • 1970-01-01
    相关资源
    最近更新 更多