Reputation: 1564
I am working on my sqldatabase, but i cannot move on because my program is giving me an error that there is no such column, even though the column is clearly defined at the top of my code under "KEY_NAME" If anybody can help me or needs me to post anymore code please tell me Thanks! I've only posted my database.
******* recent logcat information 03-14 01:24:54.285: E/Database(26073): android.database.sqlite.SQLiteException: table PeopleTable has no column named persons_name: , while compiling: INSERT INTO PeopleTable(persons_hotness, persons_name) VALUES(?, ?);
public class HotOrNot {
public static final String KEY_ROWID = "_id";
public static final String KEY_NAME = "persons_name";
public static final String KEY_HOTNESS = "persons_hotness";
private static final String DATABASE_NAME = "HotOrNotDB";
private static final String DATABASE_TABLE = "PeopleTable";
private static final int DATABASE_VERSION = 1;
private DbHelper ourHelper;
private final Context ourContext;
private SQLiteDatabase ourDatabase;
private static class DbHelper extends SQLiteOpenHelper {
public DbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ROWID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_NAME
+ " TEXT NOT NULL, " + KEY_HOTNESS + " TEXT NOT NULL);");
// String sql = String.format("create table %s "
// + "(%s int primary key, %s int, %s text, %s text)",
// DATABASE_TABLE, KEY_ROWID, KEY_NAME, KEY_HOTNESS);
// db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
onCreate(db);
}
}
public HotOrNot(Context c) {
ourContext = c;
}
public HotOrNot open() throws SQLException {
ourHelper = new DbHelper(ourContext);
ourDatabase = ourHelper.getWritableDatabase();
return this;
}
public void close() {
ourHelper.close();
}
public long createEntry(String name, String hotness) {
// TODO Auto-generated method stub
ContentValues cv = new ContentValues();
cv.put(KEY_NAME, name);
cv.put(KEY_HOTNESS, hotness);
return ourDatabase.insert(DATABASE_TABLE, null, cv);
}
public String getData() {
// TODO Auto-generated method stub
String[] columns = new String[] { KEY_ROWID, KEY_NAME, KEY_HOTNESS };
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null,
null, null);
String result = "";
int iRow = c.getColumnIndex(KEY_ROWID);
int iName = c.getColumnIndex(KEY_NAME);
int iHotness = c.getColumnIndex(KEY_HOTNESS);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
result = result + c.getString(iRow) + " " + c.getString(iName)
+ " " + c.getString(iHotness) + "\n";
}
return result;
}
}
Upvotes: 1
Views: 843
Reputation: 901
db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT,KEY_NAME TEXT NOT NULL, " + KEY_HOTNESS + " TEXT NOT NULL);");
Try the above changes..I think the problem might be due to space added before KEY_NAME. Hope this helps u..
Upvotes: 3
Reputation: 7605
replace your db.execSQL query by this
db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ROWID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_NAME
+ " TEXT NOT NULL, " + KEY_HOTNESS + " TEXT NOT NULL);");
Upvotes: 2
Reputation: 30594
try replacing + "KEY_NAME" +
with + KEY_NAME +
(without double quotes). This line is inside public void onCreate(SQLiteDatabase db)
Upvotes: 2