SQLite ошибка при добавление

134
28 ноября 2020, 05:20

Нашел пример в интернете как работать с бд решил реализовать под свою задачу. Создал класс DBHelper:

     public class DBHelper extends SQLiteOpenHelper {
       public  static final int DATABASE_VERSION=1;
       public  static final String  DATABASE_NAME="contactDb";
       public  static final String  TABLE_CONTACTS="contacts";
       public  static final String  KEY_ID="_id";//ид
       public  static final String  KEY_NAME="name";//название (гречка, молоко, мясо)
       public  static final String  KEY_SQUIRRELS =" Squirrels";//кол-во белка
       public  static final String  KEY_FAT ="Fat";//кол-во жиров
       public  static final String  KEY_CARBOHYDRATES ="Carbohydrates";//кол-во углеводы
       public  static final String  KEY_CALORIES ="Calories";//кол_во калорий

        public DBHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);

}
    @Override
    public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table "+ TABLE_CONTACTS+"("+KEY_ID+"integer primary key,"+KEY_NAME+"text,"+
            KEY_SQUIRRELS +"integer,"+ KEY_FAT +"integer,"+ KEY_CARBOHYDRATES +"integer,"+ KEY_CALORIES +
            "integer"+")");//Если таблицы не существует то мы ее создаем
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("drop table if exists " + TABLE_CONTACTS);
        onCreate(db);//а тут обновляем таблицу
}
}

После чего пытаюсь по нажатию добавить, но он выдает ошибку

E/SQLiteLog: (1) table contacts has no column named name E/SQLiteDatabase: Error inserting name=Name Fat=2 Carbohydrates=3 Squirrels=1 Calories=4 android.database.sqlite.SQLiteException: table contacts has no column named name (code 1): , while compiling: INSERT INTO contacts(name,Fat,Carbohydrates, Squirrels,Calories) VALUES (?,?,?,?,?) at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:890) at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:501) at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58) at android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:31) at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1546) at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1417) at com.example.testsqlite.MainActivity.onClick(MainActivity.java:53) at android.view.View.performClick(View.java:6294) at android.view.View$PerformClick.run(View.java:24770) at android.os.Handler.handleCallback(Handler.java:790) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6494) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

в строке

 database.insert(DBHelper.TABLE_CONTACTS, null, contentValues);

Добавлял я таким образом

 contentValues.put(DBHelper.KEY_NAME, name);
              contentValues.put(DBHelper.KEY_SQUIRRELS,protein);
              contentValues.put(DBHelper.KEY_FAT, jir);
              contentValues.put(DBHelper.KEY_CARBOHYDRATES, ygli);
              contentValues.put(DBHelper.KEY_CALORIES, calorii);

Подскажите решение данной проблемы. Заранее спасибо

Answer 1

Ну решил вроде проблему. Из-за незнания правильного синтаксиса возникли ошибки. Что я сделал перепроверил строчку

db.execSQL("create table "+ TABLE_CONTACTS+"("+KEY_ID+" integer primary key,"+KEY_NAME+" text,"+ KEY_SQUIRRELS +" integer,"+ KEY_FAT +" integer,"+ KEY_CARBOHYDRATES +" integer,"+ KEY_CALORIES + " integer"+")");

Расставил пробелы перед integer и text. Хотя не думаю что в этом была ошибка. Плюс перед запуском поменял версию базы данных с 1 на 2. Щас все работает, только не хочет показывать данные по полю SQUIRRELS. Так что как-то так

READ ALSO
Sugar ORM Android

Sugar ORM Android

Решил изучить эту ORM потому что на примерах она показалось мне легкимТак вот есть простой объект:

123
Как я могу запускать DialogFragment после загрузки Activity?

Как я могу запускать DialogFragment после загрузки Activity?

Есть DialogFragment который должен запускаться при открытии Activity, но возникла проблема, видно тормоза, думаю из-за того что DialogFragment грузиться вместе...

125
Не срабатывает keyup() при вставке значения в input чере контекстное меню “Вставить” , disabled НЕ удаляется. Как исправить?

Не срабатывает keyup() при вставке значения в input чере контекстное меню “Вставить” , disabled НЕ удаляется. Как исправить?

Есть форма (код ниже)При вставке валидного значения в поле с помощью Ctrl+V все работает - кнопка submit становиться доступной

113
Запись содержимого файла в переменную JavaScript

Запись содержимого файла в переменную JavaScript

мне нужна помощьЕсть JS функция:

110