Reputation: 592
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)
Upvotes: 1
Views: 2663
Reputation: 11766
If that's all your code,
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,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();
}
}
Upvotes: 0
Reputation: 4499
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
Upvotes: 1
Reputation: 5496
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.
Upvotes: 1