Как удалить экземпляр в классе - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть экземпляр класса Check, который я хочу удалить из базы данных SQlite, в которой он хранится. Интересно, возможно ли это? Когда я запускаю код, я получаю исключение:

android.database.sqlite.SQLiteException: unrecognized token: "8565f9b5" (code 1): , while compiling: DELETE FROM crimes WHERE uuid = 8565f9b5-5968-4e11-8d55-b7dcfd676023
        at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
        at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
        at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
        at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
        at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
        at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
        at android.database.sqlite.SQLiteDatabase.delete(SQLiteDatabase.java:1499)
        at nl.lekolkman.android.sportveldonderhoud.CheckLab.deleteCheck(CheckLab.java:40)
        at nl.lekolkman.android.sportveldonderhoud.DeleteCheckDialogFragment$2.onClick(DeleteCheckDialogFragment.java:43)

Это мой код:

public class DeleteCheckDialogFragment extends DialogFragment {

Check mCheck;

public static DeleteCheckDialogFragment newInstance(Check mCheck) {
    DeleteCheckDialogFragment frag = new DeleteCheckDialogFragment();
    frag.setCheck(mCheck);
    return frag;
}

public void setCheck(Check check) {
    this.mCheck = check;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_delete_check_dialog, container, false);
    getDialog().setTitle("Verwijder controle");
    Button annuleren = (Button) rootView.findViewById(R.id.annuleren_verwijderen);
    annuleren.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            dismiss();
        }
    });
    Button bevestigen = (Button) rootView.findViewById(R.id.bevestigen_verwijderen);
    bevestigen.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // verwijder check
            CheckLab checkLab = CheckLab.get(getActivity());
            checkLab.deleteCheck(mCheck);
        }
    });
    return rootView;
}

}

И код обработки SQLite:

public void deleteCheck(Check c) {
        String whereClause = "uuid = " + c.getId().toString();
        mDatabase.delete(CheckDbSchema.CheckTable.NAME, whereClause , null);
    }

1 Ответ

0 голосов
/ 27 апреля 2018

Попробуйте

String whereClause = "uuid = '" + c.getId().toString()+ "'";

Предполагая, что uuid хранится в типе VARCHAR, вам необходимо заключить одинарные кавычки в буквальную строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...