如何删除类中的实例

时间:2018-04-27 16:34:47

标签: java android sqlite

我有一个类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 :(得分:0)

尝试

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/root_container"
android:fitsSystemWindows="true"
android:background="@drawable/splash_gradient">
</FrameLayout>

假设@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.root_container); boolean b = getPermission(); if(b ==true){ HomeFragment fragment = new HomeFragment(); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.root_container, fragment).commit(); } else getPermission(); } 存储在 public boolean getPermission() { boolean f = false; //Check for SDK Version if greater than 23 then seek user permission if(Build.VERSION.SDK_INT>=23) { //Check whether permission is already granted if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { // Ask for user permission ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 404); if(ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) !=PackageManager.PERMISSION_DENIED) f = true; } else f = true; } return f; } 类型,您需要在文字字符串周围加上单引号。