Ошибка столбцов базы данных SQL или не существует? - PullRequest
1 голос
/ 14 марта 2012

Я работаю над своей базой данных sqld, но я не могу двигаться дальше, потому что моя программа выдает ошибку, что такого столбца нет, даже если столбец четко определен в верхней части моего кода в разделе "KEY_NAME". Если кто-то можетпомогите мне или мне нужно больше выкладывать код пожалуйста подскажите спасибо!Я только разместил свою базу данных.

******* последние данные logcat 03-14 01: 24: 54.285: E / Database (26073): android.database.sqlite.SQLiteException: таблица PeopleTable не имеет столбца с именем person_name: при компиляции: INSERT INTO PeopleTable (Person_hotness, Person_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;
    }
}

Ответы [ 3 ]

3 голосов
/ 14 марта 2012

db.execSQL ("CREATE TABLE" + DATABASE_TABLE + "(" + KEY_ROWID + "INTEGER PRIMARY KEY AUTOINCREMENT, KEY_NAME TEXT NOT NULL," + KEY_HOTNESS + "TEXT NOT NULL);");

* 2);)Попробуйте указанные выше изменения. Я думаю, что проблема может быть связана с пробелом, добавленным перед KEY_NAME.Надеюсь, это поможет вам ..
2 голосов
/ 14 марта 2012

замените ваш запрос db.execSQL этим

db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ROWID
            + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_NAME
            + " TEXT NOT NULL, " + KEY_HOTNESS + " TEXT NOT NULL);");
2 голосов
/ 14 марта 2012

попробуйте заменить + "KEY_NAME" + на + KEY_NAME + ( без двойных кавычек ). Эта строка внутри public void onCreate(SQLiteDatabase db)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...