1

I want to insert 10 to 15 columns in SQLite database but when I run the application it shows error message:

sqlite returned: error code = 1, msg = table new_lead has no column named add_to_contacts

and getting SQLite Exception while inserting data in SQLite database.

Here is my database code.

public class DataBaseHelper extends SQLiteOpenHelper
{




    public DataBaseHelper(Context context, String name,CursorFactory factory, int version) 
    {
               super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase _db) 
    {
            _db.execSQL(DataBase_Adapter.DATABASE_CREATE_LOGIN);
           _db.execSQL(DataBase_Adapter.CREATE_NEW_LEAD_TABLE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase _db, int _oldVersion, int _newVersion) 
    {

            Log.w("TaskDBAdapter", "Upgrading from version " +_oldVersion + " to " +_newVersion + ", which will destroy all old data");

            _db.execSQL("DROP TABLE IF EXISTS " + DataBase_Adapter.TABLE_NAME_LOGIN);
            _db.execSQL("DROP TABLE IF EXISTS " + DataBase_Adapter.TABLE_NEW_LEAD);

            onCreate(_db);
    }

}

Here is my code for database adapter.

public class DataBase_Adapter 
{

        //Database NAme
        static final String DATABASE_NAME = "lead_management.db";

        //Database Version
        static final int DATABASE_VERSION = 4;


        // Variable to hold the database instance
        public  SQLiteDatabase db;

        // Context of the application using the database.
        private final Context context;

        // Database open/upgrade helper
        private DataBaseHelper dbHelper;

        public  DataBase_Adapter(Context _context) 
        {
            context = _context;
            dbHelper = new DataBaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        public  DataBase_Adapter open() throws SQLException 
        {
            db = dbHelper.getWritableDatabase();
            return this;
        }

        public void close() 
        {
            db.close();
        }

        public  SQLiteDatabase getDatabaseInstance()
        {
            return db;
        }
    // TODO Auto-generated method 
           /*************************************Table New Lead*******************************************/

            //Table name
            public static  String TABLE_NEW_LEAD="new_lead";

            //Creating New Lead Table Columns
            public static final String KEY_NEW_LEAD_ID ="id";
            public static final String KEY_ORGANIZATION_NAME="organization";
            public static final String KEY_NEW_LEAD_NAME ="name"; 
            public static final String KEY_NEW_LEAD_EMAIL ="email";
            public static final String KEY_NEW_LEAD_MOBILE="mobile";
            public static final String KEY_NEW_LEAD_Product="define_products";
            public static final String KEY_NEW_LEAD_BUDGET="budget";
            public static final String KEY_NEW_LEAD_PRIORITY="priority";
            public static final String KEY_NEW_LEAD_STATUS="status";
            public static final String KEY_NEW_LEAD_NOTES="notes";
            public static final String KEY_NEW_LEAD_REMINDER_DATE="reminder_date";
            public static final String KEY_NEW_LEAD_REMINDER_TIME="reminder_time";
            public static final String KEY_NEW_LEAD_ADDtoCONTACTS="add_to_contacts";
            public static final String KEY_NEW_LEAD_CurrentDate="current_date";


            //// SQL Statement to create a New Lead Database.


            static final String CREATE_NEW_LEAD_TABLE = "CREATE TABLE "+ TABLE_NEW_LEAD + "("
                                                    + KEY_NEW_LEAD_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " 
                                                    + KEY_ORGANIZATION_NAME + " TEXT,"
                                                    + KEY_NEW_LEAD_NAME + " TEXT, "
                                                    + KEY_NEW_LEAD_EMAIL+ " TEXT, "
                                                    + KEY_NEW_LEAD_MOBILE + " TEXT, "
                                                    + KEY_NEW_LEAD_Product + " TEXT, "
                                                    + KEY_NEW_LEAD_BUDGET + " TEXT, "
                                                    + KEY_NEW_LEAD_PRIORITY + " TEXT, "
                                                    + KEY_NEW_LEAD_STATUS + " TEXT, "
                                                    + KEY_NEW_LEAD_NOTES + " TEXT, "
                                                    + KEY_NEW_LEAD_REMINDER_DATE + " TEXT, "
                                                    + KEY_NEW_LEAD_REMINDER_TIME + " TEXT, "
                                                    + KEY_NEW_LEAD_ADDtoCONTACTS + " TEXT, "
                                                    + KEY_NEW_LEAD_CurrentDate + " TEXT "+");"; 


          public void insert_NewLead_Entry(New_Lead_BeanClass newLead_BeanClass)
          {
              SQLiteDatabase sdb = dbHelper.getWritableDatabase();

              ContentValues contentNewLead_Val=new ContentValues();

              contentNewLead_Val.put(KEY_ORGANIZATION_NAME, newLead_BeanClass.get_organization());
              contentNewLead_Val.put(KEY_NEW_LEAD_NAME, newLead_BeanClass.get_Name());
              contentNewLead_Val.put(KEY_NEW_LEAD_EMAIL, newLead_BeanClass.get_Email());
              contentNewLead_Val.put(KEY_NEW_LEAD_MOBILE, newLead_BeanClass.get_MobileNo());
              contentNewLead_Val.put(KEY_NEW_LEAD_Product, newLead_BeanClass.get_Product());
              contentNewLead_Val.put(KEY_NEW_LEAD_BUDGET, newLead_BeanClass.get_Budget());
              contentNewLead_Val.put(KEY_NEW_LEAD_PRIORITY, newLead_BeanClass.get_Priority());
              contentNewLead_Val.put(KEY_NEW_LEAD_STATUS, newLead_BeanClass.get_Status());
              contentNewLead_Val.put(KEY_NEW_LEAD_NOTES, newLead_BeanClass.get_Notes());
              contentNewLead_Val.put(KEY_NEW_LEAD_REMINDER_DATE, newLead_BeanClass.get_Reminder_Date());
              contentNewLead_Val.put(KEY_NEW_LEAD_REMINDER_TIME, newLead_BeanClass.get_Reminder_Time());
              contentNewLead_Val.put(KEY_NEW_LEAD_ADDtoCONTACTS, newLead_BeanClass.get_AddtoContact());
              contentNewLead_Val.put(KEY_NEW_LEAD_CurrentDate, newLead_BeanClass.get_CurrentDate());

              sdb.insert(TABLE_NEW_LEAD , null , contentNewLead_Val );

              //Close The Database Connection
              sdb.close();

          }

}

Here is my activity code for inserting data.

dbHandller=new DataBase_Adapter(this);
                dbHandller=dbHandller.open();

                New_Lead_BeanClass  new_Lead_BeanClass = new New_Lead_BeanClass();

                new_Lead_BeanClass.set_organization(strOrgName);
                new_Lead_BeanClass.set_Name(strContactName);
                new_Lead_BeanClass.set_Email(strContactEmail);
                new_Lead_BeanClass.set_MobileNo(strContactMobile);
                new_Lead_BeanClass.set_Product(selectedProductItem);
                new_Lead_BeanClass.set_Budget(strBudget);
                new_Lead_BeanClass.set_Priority(selectedPriorityItem);
                new_Lead_BeanClass.set_Status(selectedStatusItem);
                new_Lead_BeanClass.set_Notes(strNotes);
                new_Lead_BeanClass.set_Reminder_Date(strDate);
                new_Lead_BeanClass.set_Reminder_Time(strTime);
                new_Lead_BeanClass.set_AddtoContact(strToggleVlaue);
                new_Lead_BeanClass.set_CurrentDate(strCurrentDate);

                dbHandller.insert_NewLead_Entry(new_Lead_BeanClass);

The log cat stack trace info

12-17 11:28:57.703: E/Database(336): Error inserting budget=7878 reminder_time=2 : 27 organization=war add_to_contacts=true status=open [email protected] priority=medium current_date=17-Dec-2013 name=gt define_products=a reminder_date=3-17-2014 notes=vhbgjhngk mobile=56768
12-17 11:28:57.703: E/Database(336): android.database.sqlite.SQLiteException: table new_lead has no column named add_to_contacts: , while compiling: INSERT INTO new_lead(budget, reminder_time, organization, add_to_contacts, status, email, priority, current_date, name, define_products, reminder_date, notes, mobile) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
12-17 11:28:57.703: E/Database(336):    at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
12-17 11:28:57.703: E/Database(336):    at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:92)
12-17 11:28:57.703: E/Database(336):    at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:65)
12-17 11:28:57.703: E/Database(336):    at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:83)
12-17 11:28:57.703: E/Database(336):    at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:41)
12-17 11:28:57.703: E/Database(336):    at android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1149)
12-17 11:28:57.703: E/Database(336):    at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1569)
12-17 11:28:57.703: E/Database(336):    at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1426)
12-17 11:28:57.703: E/Database(336):    at com.lead_management_project.DataBase_Adapter.insert_NewLead_Entry(DataBase_Adapter.java:245)
12-17 11:28:57.703: E/Database(336):    at com.lead_management_project.New_Lead_Activity5$9.onClick(New_Lead_Activity5.java:411)
12-17 11:28:57.703: E/Database(336):    at android.view.View.performClick(View.java:2485)
12-17 11:28:57.703: E/Database(336):    at android.view.View$PerformClick.run(View.java:9080)
12-17 11:28:57.703: E/Database(336):    at android.os.Handler.handleCallback(Handler.java:587)
12-17 11:28:57.703: E/Database(336):    at android.os.Handler.dispatchMessage(Handler.java:92)
12-17 11:28:57.703: E/Database(336):    at android.os.Looper.loop(Looper.java:123)
12-17 11:28:57.703: E/Database(336):    at android.app.ActivityThread.main(ActivityThread.java:3683)
12-17 11:28:57.703: E/Database(336):    at java.lang.reflect.Method.invokeNative(Native Method)
12-17 11:28:57.703: E/Database(336):    at java.lang.reflect.Method.invoke(Method.java:507)
12-17 11:28:57.703: E/Database(336):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
12-17 11:28:57.703: E/Database(336):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
12-17 11:28:57.703: E/Database(336):    at dalvik.system.NativeStart.main(Native Method)
2
  • Where do you create the database?i don't see the code for that Commented Dec 17, 2013 at 6:13
  • @insomniac , I have to post my database code. Commented Dec 17, 2013 at 6:16

3 Answers 3

1

You should include this method in onCreate() of your helper class

  static final String CREATE_NEW_LEAD_TABLE = "CREATE TABLE "+ TABLE_NEW_LEAD + "("
                                            + KEY_NEW_LEAD_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " 
                                            + KEY_ORGANIZATION_NAME + " TEXT,"
                                            + KEY_NEW_LEAD_NAME + " TEXT, "
                                            + KEY_NEW_LEAD_EMAIL+ " TEXT, "
                                            + KEY_NEW_LEAD_MOBILE + " TEXT, "
                                            + KEY_NEW_LEAD_Product + " TEXT, "
                                            + KEY_NEW_LEAD_BUDGET + " TEXT, "
                                            + KEY_NEW_LEAD_PRIORITY + " TEXT, "
                                            + KEY_NEW_LEAD_STATUS + " TEXT, "
                                            + KEY_NEW_LEAD_NOTES + " TEXT, "
                                            + KEY_NEW_LEAD_REMINDER_DATE + " TEXT, "
                                            + KEY_NEW_LEAD_REMINDER_TIME + " TEXT, "
                                            + KEY_NEW_LEAD_ADDtoCONTACTS + " TEXT, "
                                            + KEY_NEW_LEAD_CurrentDate + " TEXT "+");"; 

look at this tutorial

Sqlite Integartion

Sign up to request clarification or add additional context in comments.

5 Comments

See this is my database onCreate method = @Override public void onCreate(SQLiteDatabase _db) { _db.execSQL(DataBase_Adapter.DATABASE_CREATE_LOGIN); _db.execSQL(DataBase_Adapter.CREATE_NEW_LEAD_TABLE); }
yeah i saw that in above code but you should change it. the overrided onCreate method is used to create database and tables. You can specify your query here. You dont need that database Adpapter class. The Create table statement is not event getting called there. If you want that class then it should be inside constructor. But it will be better to avoid that class.
,Earlier my record was inserting after that i have added only one column and it is not getting inserted.And in SQLIte browser is showing like= Reminderdate field text , AddtoContactsTextcurrentdatefield Text.DataBase is not getting AddtoContact field.
uninstall you app from emulator device , clean it and build again and then install and run it again
Thanks for the help,I just remove the @Override of onCreate() in my Dtabase class.Thanks for the help.
1

Your database is not being created correctly. You have not placed your onCreate(SQLiteDatabase obj) method in the class.

Check this project.

And see this tutorial by Vogella.

This is the probable error.

1 Comment

I already post this code line above.@Override public void onCreate(SQLiteDatabase _db) { _db.execSQL(DataBase_Adapter.DATABASE_CREATE_LOGIN); _db.execSQL(DataBase_Adapter.CREATE_NEW_LEAD_TABLE); }
0

If that's all your code,

  • You haven't called the CREATE_NEW_LEAD_TABLE Command anywhere in the code,check if you extended the class from SQLiteOpenHelper and have implemented the methods such as onCreate(SQLIteDatabase db) and onUpgrade() methods
  • and if yes,you need to check if you are upgrading from an already existing database
  • and if yes try to change the DB_Version variable

,try this below code for example

public class dbHandler extends SQLiteOpenHelper{
static String DB_NAME="mapsDb";
static int DB_VERSION=1;
String TAB_NAME="usertable";
String FILED_ID="id";
String FILED_DRIVERNAME="driver_name";
String FILED_CARNUMBER="cno";
String FILED_CARMODEL="cmodel";
String MARKER_TAB="markerTable";
String FILED_DRIVERID="id";
String FILED_LAT="latitude";
String FILED_LON="longtitude";
public static Context con;
    public dbHandler(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
        // TODO Auto-generated constructor stub
        this.con=context;
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        String CREATE_TABLE="CREATE TABLE "+TAB_NAME+" ("+FILED_ID+" TEXT PRIMARY KEY,"+FILED_DRIVERNAME+" TEXT,"+FILED_CARNUMBER+" TEXT,"+FILED_CARMODEL+" TEXT);";
        String CREATE_MARKE_TABLE="CREATE TABLE "+MARKER_TAB+" ("+FILED_DRIVERID+" TEXT,"+FILED_LAT+" TEXT,"+FILED_LON+" TEXT);";
        db.execSQL(CREATE_TABLE);
        db.execSQL(CREATE_MARKE_TABLE);
        //db.update(table, values, whereClause, whereArgs)
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS "+TAB_NAME);
        db.execSQL("DROP TABLE IF EXISTS "+MARKER_TAB);
        onCreate(db);

    }
    public void insertDriverDetails(String id, String name,
            String cno, String mno) {
        // TODO Auto-generated method stub
        SQLiteDatabase db=this.getWritableDatabase();
        ContentValues cv=new ContentValues();
        cv.put(FILED_ID, id);
        cv.put(FILED_DRIVERNAME, name);
        cv.put(FILED_CARNUMBER, cno);
        cv.put(FILED_CARMODEL, mno);
        try{
        db.insert(TAB_NAME, null, cv);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        db.close();



    }
    public void updateMarkerForId(String id, String longt, String lat) {
        // TODO Auto-generated method stub
        SQLiteDatabase db=this.getWritableDatabase();
        String UPDATE_QUERY="UPADATE "+MARKER_TAB+" SET "+FILED_LON+"=\""+longt+"\","+FILED_LAT+"\""+lat+"\" WHERE "+FILED_DRIVERID+"=\""+id+"\";";
        db.execSQL(UPDATE_QUERY);
//      db.raw
//      db.close();
    }

}

2 Comments

I already call my CREATE_NEW_LEAD_TABLE command in onCreate method which is i have to post above in my question.
,Yah I have to change my database version is 4.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.