简体   繁体   中英

SQL database Columns error, or does not exist?

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;
    }
}

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..

try replacing + "KEY_NAME" + with + KEY_NAME + ( without double quotes ). This line is inside public void onCreate(SQLiteDatabase db)

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);");

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM