mercredi 6 janvier 2016

SQLite Exception: near "=" on delete query

I am having an issue with my college project. I am trying to delete a row from my one of my tables using the following query

//---deletes a particular match---
    public boolean deleteMatch(String name)
    {
        SQLiteDatabase sqLiteDatabase = getWritableDatabase();
        return sqLiteDatabase.delete(TABLE_FIXTURES, MATCH_OPPONENT + " = " + name, null) > 0;
    }

Here I am trying to delete a record based upon the match_opponent and passing the String value name

I am then calling this method in my EditSchedule activity below:

public class EditSchedule extends AppCompatActivity {

    public Button fixtureSearch;
    public EditText opponentName;
    public String searchTerm;

    ListView editMatch;

    DBHelper dbHelper = new DBHelper(this);

    SQLiteDatabase sqLiteDatabase;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_editfixture);

        editMatch = (ListView) findViewById(R.id.listViewEditMatch);
        opponentName = (EditText) findViewById(R.id.fixtureOpponentDelete);
        searchTerm = opponentName.getText().toString();

        fixtureSearch = (Button) findViewById(R.id.fixtureSearchButton);
        fixtureSearch.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        dbHelper.deleteMatch(searchTerm);
                    }
                    }
        );
    }
}

So when I test my application by typing in a name of an opponent that I have in the fixture table and clicking on the delete button, I get the following error:

01-06 07:49:42.476  25778-25778/com.example.myacer.clubhub E/AndroidRuntime﹕ FATAL EXCEPTION: main
    android.database.sqlite.SQLiteException: near "=": syntax error (code 1): , while compiling: DELETE FROM fixtures WHERE match_opponent =
            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:1494)
            at com.example.myacer.clubhub.database.DBHelper.deleteMatch(DBHelper.java:243)
            at com.example.myacer.clubhub.manager.EditSchedule$1.onClick(EditSchedule.java:47)
            at android.view.View.performClick(View.java:4240)
            at android.view.View$PerformClick.run(View.java:17721)
            at android.os.Handler.handleCallback(Handler.java:730)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)

Can anyone see where I am going wrong? All help greatly appreciated.

Aucun commentaire:

Enregistrer un commentaire