Краш приложения при добавлении данных в таблицу SQLite

353
12 ноября 2017, 14:56
public void startTimer(View v) {
    DayDbHelper dayDbHelper = new DayDbHelper(this);
    SQLiteDatabase db = dayDbHelper.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(DayContract.TrenOnDay.COLUMN_DATE, date);
    values.put(DayContract.TrenOnDay.COLUMN_YPRN, getYpr);
    values.put(DayContract.TrenOnDay.COLUMN_POD, stringP);
    values.put(DayContract.TrenOnDay.COLUMN_POV, kolPov);
    values.put(DayContract.TrenOnDay.COLUMN_VES, getVes);
    long newRowId = db.insert(DayContract.TrenOnDay.TABLE_NAME, null, values);
    if (newRowId == -1) {
        Toast toastErrorbd = Toast.makeText(getApplicationContext(), "Ошибка записи прогресса", Toast.LENGTH_SHORT);
        toastErrorbd.setGravity(Gravity.BOTTOM, 0, 0);
        toastErrorbd.show();
    } else {
        Toast toastSuc = Toast.makeText(getApplicationContext(), "Прогресс сохранен", Toast.LENGTH_SHORT);
        toastSuc.setGravity(Gravity.BOTTOM, 0, 0);
        toastSuc.show();
    }

Добавляю данные в таблицу методом onClick

Контракт:

public final class DayContract {
    private DayContract(){
    };

    public static final class TrenOnDay implements BaseColumns{
        public static final String TABLE_NAME = "table";
        public static final String COLUMN_DATE = "date";
        public static final String COLUMN_YPRN = "ypr";
        public static final String COLUMN_POD = "pod";
        public static final String COLUMN_POV = "pov";
        public static final String COLUMN_VES = "ves";
        public static final String _ID = BaseColumns._ID;
    }

Хелпер

public class DayDbHelper extends SQLiteOpenHelper {
    public static final String LOG_TAG = DayDbHelper.class.getSimpleName();
    private static final String DB_NAME = "myTren.db";
    private static final int DB_V = 1;
    public DayDbHelper (Context context){
        super(context, DB_NAME, null, DB_V);
    }
    public void onCreate (SQLiteDatabase db){
        String SQL_CREATE_DAY_TABLE = "CREATE TABLE" + DayContract.TrenOnDay.TABLE_NAME + " (" +
                DayContract.TrenOnDay._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                DayContract.TrenOnDay.COLUMN_DATE + " TEXT NOT NULL, " +
                DayContract.TrenOnDay.COLUMN_YPRN + " TEXT NOT NULL, " +
                DayContract.TrenOnDay.COLUMN_POD + " TEXT NOT NULL, " +
                DayContract.TrenOnDay.COLUMN_POV + " TEXT NOT NULL, " +
                DayContract.TrenOnDay.COLUMN_VES + " TEXT NOT NULL);";
        db.execSQL(SQL_CREATE_DAY_TABLE);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w("SQLite", "Обновляемся с версии " + oldVersion + " на версию " + newVersion);
        db.execSQL("DROP TABLE IF EXISTS " + DayContract.TrenOnDay.TABLE_NAME);
        onCreate(db);
    }

Это?

11-11 20:25:47.821 18111-18111/aranea.upnotealfa I/ViewRootImpl: CPU Rendering VSync enable = true
11-11 20:25:47.964 18111-18111/aranea.upnotealfa I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@2d05930f time:83453699
11-11 20:25:55.779 18111-18111/aranea.upnotealfa E/SQLiteLog: (1) near "TABLEtable": syntax error
Answer 1

"TABLEtable": syntax error - а вот и проблема.

String SQL_CREATE_DAY_TABLE = "CREATE TABLE" + DayContract.TrenOnDay.TABLE_NAME 

Ошибка тут. После CREATE TABLE добавьте пробел. "CREATE TABLE "

Answer 2

У вас не хватает пробела между CREATE TABLE и собственно именем таблицы

READ ALSO
Подключение css к html в Java

Подключение css к html в Java

Не удается подключить css файл stylecss, который находится в папке css, html его просто не видит

542
Иногда возникает ошибка при работе с List Java

Иногда возникает ошибка при работе с List Java

Уважаемые мастера программирования, ломаю голову, мне это очень нравится, но до тех пора она не начинает от этого болеть! Вот-вот я совсем...

304
Запись/Чтение строкового массива в Java, Android

Запись/Чтение строкового массива в Java, Android

Есть строковый массив test, нужно сохранить его в папке на телефоне, чтобы его можно было увидеть из проводникаА потом считать его из папки...

305
Изменение полей ошибки

Изменение полей ошибки

Если при запросе что-то пошло не так, то RestController выкинет json такого вида:

304