Click here to Skip to main content
15,895,799 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I get this error

android.database.sqlite.SQLiteException: table RejectList has no column named Number (code 1): , while compiling: INSERT INTO RejectList(Number) VALUES (?)


Java
package com.amarcade.applicada.kamiproject;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Created by Mansoor on 17/03/2016.
 */
public class MyDBHandler extends SQLiteOpenHelper {
    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_Name = "Kami.db";
    public static final String TABLE_RejectList = "RejectList";
    public static final String COLUMN_NUMBER = "Number";

    public MyDBHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, DATABASE_Name, factory, DATABASE_VERSION);
    }


    @Override
    public void onCreate(SQLiteDatabase db) {
        String query = "CREATE TABLE "+TABLE_RejectList+"("+
                COLUMN_NUMBER+"TEXT PRIMARY KEY);";
        db.execSQL(query);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS "+TABLE_RejectList);
        onCreate(db);
    }

    public void addNumber(Numbers Number)
    {
        ContentValues values=new ContentValues();
        values.put(COLUMN_NUMBER,Number.getNumber());
        SQLiteDatabase db = getWritableDatabase();
        db.insert(TABLE_RejectList, null, values);
        db.close();
    }

    public void deleteNumber(String Number)
    {
        SQLiteDatabase db=getWritableDatabase();
        db.execSQL("DELETE FROM" + TABLE_RejectList + "WHERE" + COLUMN_NUMBER + "=\"" + Number + "\";");
    }

    public String showNumbers()
    {
        SQLiteDatabase db = getWritableDatabase();
        String Number = "";
        String query="SELECT * FROM"+TABLE_RejectList+"WHERE"+COLUMN_NUMBER+"=\""+Number+"\";";
        Cursor c = db.rawQuery(query,null);
        c.moveToFirst();
        while(!c.isAfterLast())
        {
            if(c.getString(c.getColumnIndex("Number"))!=null)
            {
                Number += c.getString(c.getColumnIndex("Number"));
                Number += "\n";
            }
        }
        db.close();
        return Number;
    }
}


What I have tried:

I have checked the MydbHandler class but couldn't find any solution.
Posted
Updated 17-Mar-16 23:47pm
Comments
RedDk 17-Mar-16 18:13pm    
For starters, knowing only TSQL and nothing about java or android, that string you've prepared for concatenation looks suspect:

DELETE FROM" + TABLE_RejectList + "WHERE" + COLUMN_NUMBER + "=\"" + Number + "\";"

Try:

DELETE FROM " + TABLE_RejectList + " WHERE " + COLUMN_NUMBER + " =\" " + Number + " \"; "

Generally, {space} has to be respected here.
Member 10528646 17-Mar-16 18:34pm    
Delete Comes after but I cant even insert value in database
Mohibur Rashid 17-Mar-16 18:27pm    
Build the string in a variable before you call exesql. And print the SQL. And install sqlite CLI in your machine and verify the queries

1 solution

Java
String query = "CREATE TABLE "+TABLE_RejectList+"("+
        COLUMN_NUMBER+"TEXT PRIMARY KEY);";

You forgot the space between COLUMN_NUMBER and "TEXT", it should be:
Java
String query = "CREATE TABLE "+TABLE_RejectList+"("+
        COLUMN_NUMBER+" TEXT PRIMARY KEY);";
 
Share this answer
 
Comments
RedDk 18-Mar-16 11:44am    
mr. smartypants!
Richard MacCutchan 18-Mar-16 11:49am    
You're too kind :P

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900