2015-04-28 3 views
1

У меня есть существующая база данных, которую я создал с помощью SQLiteOpenHelper, но теперь я хочу перейти в Sugar Orm и попытаться добавить новые таблицы в существующие базы данных. Я следую всем пунктам, указанным на странице конфигурации страницы сахара или (Sugar Orm Configuration).создание таблиц в существующей базе данных sqlite sugar orm

Вот как моя конфигурация выглядит,

AndroidManifest.xml

<application 
    android:name=".application" 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 

    <meta-data android:name="DATABASE" android:value="database.db" /> 
    <meta-data android:name="VERSION" android:value="5" /> 
    <meta-data android:name="QUERY_LOG" android:value="true" /> 
    <meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.example.in.smart" /> 

application.java (класс Application)

public class application extends com.orm.SugarApp 
{ 
private static Context instance; 
public static Context get() { 
    return application.instance; 
} 

класс Модель

public class Now extends SugarRecord<Now> { 
public String type = null; 
public String name = null; 
public String address = null; 
public Date created; 

public Now(){} 

public Now(String type, String name,String address,Date created){ 
    super(); 
    this.type = type; 
    this.name = name; 
    this.address = address; 
    this.created = created; 
} 

}

@Override public void onCreate() 
{ 
    super.onCreate(); 
    instance = getApplicationContext(); 
    //ACRA.init(this); 
} 

}

добавив данные процесса

Now now = new Now(entry.getKey(), entry.getValue().get(i).name, entry.getValue().get(i).address, calendar.getTime()); 
    now.save(); // throws exception here 

Но я получаю это исключение

E/SQLiteLog﹕ (1) no such table: NOW 
E/SQLiteDatabase﹕ Error inserting ADDRESS=abc TYPE=Now NAME=tyy CREATED=1430229379156 
android.database.sqlite.SQLiteException: no such table: NOW (code 1): , while compiling: INSERT INTO NOW(ADDRESS,TYPE,NAME,CREATED) VALUES (?,?,?,?) 
     at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
     at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) 
     at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) 
     at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
     at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
     at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 
     at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1469) 
     at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341) 
     at com.orm.SugarRecord.save(SugarRecord.java:126) 
     at com.orm.SugarRecord.save(SugarRecord.java:45) 

любое предложение сог для меня это выглядит, как я делаю все правильно. Благодаря

+0

Можете ли вы показать нам трассировку стека? –

+0

обновлена ​​трассировка стека – user3290805

+0

Вы также прошли [Инструкции по миграции базы данных] (http://satyan.github.io/sugar/migration.html)?Вам придется поднять версию и предоставить сценарий обновления, который создает новую таблицу 'Now' - это будет * не * автоматически происходить. –

ответ

0

INSERT INTO утверждение не действует:

INSERT INTO NOW(ADDRESS,TYPE,NAME,CREATED) VALUES (?,?,?,?,?) 

Вы пытаетесь вставить 5 значений вместо 4 (обратите внимание на 5 вопросительные знаки).

Я думаю, SugarRecord имеет идентификатор, который является обязательным.

+0

, тогда это должно быть проблемой в конструкторе, а не в таблице, на самом деле я проверяю, что это равное число? in insert Into, я уже обновил его под вопросом – user3290805

+0

По какой-то причине таблица не существует. Почему это не может быть выведено из ваших образцов кода. –

+0

да, это в чем проблема, но это именно то, что у меня есть в моем коде .. любые подсказки? – user3290805

5

то же самое случилось со мной, и решение было только до версии базы данных в манифесте:

От:

<meta-data 
      android:name="VERSION" 
      android:value="2" /> 

To:

<meta-data 
      android:name="VERSION" 
      android:value="3" /> 

С уважением.

0
Now now = new Now(entry.getKey(), entry.getValue().get(i).name, entry.getValue().get(i).address, calendar.getTime()); 

Есть такая же проблема. Проверьте, является ли одна из ваших записей «нулевой».

Sugar ORM не поддерживает нулевые значения. Также увеличьте версию базы данных.

0

Попробуйте отключить мгновенный запуск, сахар orm не работает с мгновенным запуском.

Смежные вопросы