Sqlite android не создаются таблицы

408
30 марта 2017, 19:14

При запуске приложение не создает таблицы в sqlite

public class SQLiteHelper extends SQLiteOpenHelper {
public SQLiteHelper(Context context) {
    super(context, TranerContract.DB, null, TranerContract.VERSION);
}
/**
 * Called when the database is created for the first time. This is where the
 * creation of tables and the initial population of the tables should happen.
 *
 * @param db The database.
 */
@Override
public void onCreate(SQLiteDatabase db) {
    //Завел что бы убедиться в режиме днбагера, база доступна для записи и открыта
    int i= db.getVersion();
    boolean t1= db.isOpen();
    boolean t2=  db.isReadOnly();
    createTableExes(db);
    createTableEPodhod(db);
    createTableEDay(db);
    createTableEDayExes(db);
    createTableEProg(db);
    fromCollect();
}
....
private void createTableExes(SQLiteDatabase db) {
    String SQL_CREATE_GUESTS_TABLE = "CREATE TABLE " + TranerContract.E.TableEExes.TABLE + " ("
            + TranerContract.E.TableEExes._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
            + TranerContract.E.TableEExes.COLUMN_ID + " INTEGERS NOT NULL UNIQUE, "
            + TranerContract.E.TableEExes.COLUMN_NAME + " NVARCHAR NOT NULL);";
    // Запускаем создание таблицы
    MyLog.i(SQL_CREATE_GUESTS_TABLE);
    db.execSQL(SQL_CREATE_GUESTS_TABLE);
}

Для создания Таблиц используется класс контракт

public class TranerContract {
final static String DB = "test.db";
final static int VERSION = 1;
public static class E {
    public static class TableEExes {
        public final static String TABLE = "e_exes";
        public final static String _ID = BaseColumns._ID;
        public final static String COLUMN_ID = "id";
        public final static String COLUMN_NAME = "name";

Запускаю приложение в режиме дебагера. Приложение заходит и отрабатывает каждую функцию по создании таблицы. ошибок не выдает. Но я так же параллельно сижу по консоле в этой таблице через adb.exe shell sqlite3 /data/data/th.stdio17.mytrener/databases/test.db .table И ничего не выводит. Было подозрение что неправильно формируется sql запрос, для этоо вывожу в логе запрос

   03-29 11:51:48.342 26166-26166/th.stdio17.mytrener I/MY_LOG: CREATE TABLE e_exes (_id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGERS NOT NULL UNIQUE, name NVARCHAR NOT NULL);

как видно запрос корректный и если его вставить в консоль то таблица создаться

Еще интересный момент пока нет файла test.db понятно что метод onCreate вызывается. Но он отрабатывается даже если я запускаю приложение во второй раз и этот файл уже существует.

Answer 1

Неправильно формируется строка запроса. INTEGERS - нельзя писать во множественном числе, правильно INTEGER. В SQLite также вместо NVARCHAR используется TEXT. Попробуйте с этими исправлениями.

String SQL_CREATE_GUESTS_TABLE = "CREATE TABLE " + TranerContract.E.TableEExes.TABLE + " ("
        + TranerContract.E.TableEExes._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
        + TranerContract.E.TableEExes.COLUMN_ID + " INTEGER NOT NULL UNIQUE, "
        + TranerContract.E.TableEExes.COLUMN_NAME + " TEXT NOT NULL);";
READ ALSO
Сделать ограничение

Сделать ограничение

У меня есть поле, в которое я ввожу имя пользователя, а проверка на валидацию следующая:

226
Как избавится от ошибки с переменными char

Как избавится от ошибки с переменными char

Смысл в программе в том что она должна вывести на консоль 4 значения: Potatos, Tomatos, Apple, OrangeНо вместо этого выводит предупреждение [Warning] deprecated conversion...

229
Перевод hex в код символа

Перевод hex в код символа

У меня есть переменная типа String, в которой лежит следующее значение: "0xF9"Как мне получить выходной символ, код которого равен hex значению в этой...

337
Нужно построить график с датами&

Нужно построить график с датами&

Доброго времени сутокЯ в приложении использую GraphView для построения графика

185