Shiv
Shiv

Reputation: 129

Getting No such column error

In the database of my Android App, I am trying to update the value of specific cell of the column but getting error NO SUCH COLUMN.

I am trying this query in my Database Handler class,

public void addVote(String politicianname,int vote)
{
    ContentValues values=new ContentValues();
    values.put(KEY_TOTALVOTES, vote);
    db.update(TABLE_POLLINGVOTES, values, KEY_POLITICIANNAMES=politicianname, null);
}

This is where i am creating table,

String CREATE_POLLINGVOTES_TABLE="CREATE TABLE pollingvotes(politiciannames TEXT, totalvotes NUMERIC)";
db.execSQL(CREATE_POLLINGVOTES_TABLE);

This is where is adding names in TABLE_POLLINGVOTES,

public void addPoliticianNames() //This method is called before calling `addVote` Method
{
    deleteTable();
    String[] a = {"I","Me","Myself"};

    ContentValues values = new ContentValues();
    for (int i = 0; i < a.length; i++)
    {

        values.put(KEY_POLITICIANNAMES, a[i]);
        db.insert(TABLE_POLLINGVOTES, null, values);
    }
}

Here is my LogCat,

10-31 05:35:45.463: E/AndroidRuntime(1169): FATAL EXCEPTION: main
10-31 05:35:45.463: E/AndroidRuntime(1169): android.database.sqlite.SQLiteException: no such column: I (code 1): , while compiling: UPDATE pollingvotes SET totalvotes=? WHERE I
10-31 05:35:45.463: E/AndroidRuntime(1169):     at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
10-31 05:35:45.463: E/AndroidRuntime(1169):     at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882)
10-31 05:35:45.463: E/AndroidRuntime(1169):     at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493)
10-31 05:35:45.463: E/AndroidRuntime(1169):     at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
10-31 05:35:45.463: E/AndroidRuntime(1169):     at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
10-31 05:35:45.463: E/AndroidRuntime(1169):     at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
10-31 05:35:45.463: E/AndroidRuntime(1169):     at android.database.sqlite.SQLiteDatabase.updateWithOnConflict(SQLiteDatabase.java:1563)
10-31 05:35:45.463: E/AndroidRuntime(1169):     at android.database.sqlite.SQLiteDatabase.update(SQLiteDatabase.java:1514)
10-31 05:35:45.463: E/AndroidRuntime(1169):     at com.example.polling.DBAdapter.addVote(DBAdapter.java:134)
10-31 05:35:45.463: E/AndroidRuntime(1169):     at com.example.polling.VotePage.onClick(VotePage.java:42)
10-31 05:35:45.463: E/AndroidRuntime(1169):     at android.view.View.performClick(View.java:4204)
10-31 05:35:45.463: E/AndroidRuntime(1169):     at android.view.View$PerformClick.run(View.java:17355)
10-31 05:35:45.463: E/AndroidRuntime(1169):     at android.os.Handler.handleCallback(Handler.java:725)
10-31 05:35:45.463: E/AndroidRuntime(1169):     at android.os.Handler.dispatchMessage(Handler.java:92)
10-31 05:35:45.463: E/AndroidRuntime(1169):     at android.os.Looper.loop(Looper.java:137)
10-31 05:35:45.463: E/AndroidRuntime(1169):     at android.app.ActivityThread.main(ActivityThread.java:5041)
10-31 05:35:45.463: E/AndroidRuntime(1169):     at java.lang.reflect.Method.invokeNative(Native Method)
10-31 05:35:45.463: E/AndroidRuntime(1169):     at java.lang.reflect.Method.invoke(Method.java:511)
10-31 05:35:45.463: E/AndroidRuntime(1169):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
10-31 05:35:45.463: E/AndroidRuntime(1169):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)

This is how my database looks,

enter image description here

Where I am getting wrong,

Please help,

Thanks.

Upvotes: 0

Views: 482

Answers (1)

Lawrence Choy
Lawrence Choy

Reputation: 6108

db.update(TABLE_POLLINGVOTES, values, KEY_POLITICIANNAMES + "='" + politicianname + "'", null);

You forgot to quote the = sign in the query.

Upvotes: 3

Related Questions