Нашел пример в интернете как работать с бд решил реализовать под свою задачу. Создал класс 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);
Подскажите решение данной проблемы. Заранее спасибо
Ну решил вроде проблему. Из-за незнания правильного синтаксиса возникли ошибки. Что я сделал перепроверил строчку
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. Так что как-то так
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Решил изучить эту ORM потому что на примерах она показалось мне легкимТак вот есть простой объект:
Есть DialogFragment который должен запускаться при открытии Activity, но возникла проблема, видно тормоза, думаю из-за того что DialogFragment грузиться вместе...
Есть форма (код ниже)При вставке валидного значения в поле с помощью Ctrl+V все работает - кнопка submit становиться доступной