Sugar ORM没有这样的表异常

时间:2016-03-04 09:19:14

标签: android sqlite sugarorm

Sugar ORM在Android< 5上完美运行,但在Android 5>它崩溃了。 我使用的是1.4版

请帮帮我。

错误:android.database.sqlite.SQLiteException: no such table: AUDIO (code 1): , while compiling: SELECT * FROM AUDIO

proguard-rules.pro

-keep class me.lobanov.mp3downloadsfree.models.** { *; }

我的模特课:

package me.lobanov.mp3downloadsfree.models;

import com.orm.SugarRecord;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@ToString
public class Audio extends SugarRecord {
    private long aud_id;
    private String aud_artist;
    private String aud_title;
    private String aud_url;
    private long aud_duration;

    public Audio() {
    }

    public Audio(long aud_id, String aud_artist, String aud_title, String aud_url, long aud_duration){
        this.aud_id = aud_id;
        this.aud_artist = aud_artist;
        this.aud_title = aud_title;
        this.aud_url = aud_url;
        this.aud_duration = aud_duration;
    }
}

我的申请类:

public class App extends SugarApp {
    @Override
    public void onCreate() {
        super.onCreate();
    }
}

我的清单:

<meta-data android:name="DATABASE" android:value="mp3downloadsfree.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="me.lobanov.mp3downloadsfree.models" />

6 个答案:

答案 0 :(得分:14)

禁用即时运行对我有用。

答案 1 :(得分:3)

如果你已经用糖运行你的应用程序,然后你添加了一个“没有这样的表错误”的模型,那么你需要在AndroidManifest.xml中更新(增加)你的数据库VERSION元。这解决了大多数时候即时运行不是问题的问题。看看问题HERE 了解更多信息。

答案 2 :(得分:1)

禁用即时运行后,请确保在再次运行之前从手机/模拟器中卸载应用程序。

答案 3 :(得分:1)

我使用的是版本1.3并遇到了同样的问题。 但我通过使用gradle 1.5版并初始化SugarContext来解决。

在gradle依赖项中:

 compile 'com.github.satyan:sugar:1.5' 

在onCreate方法中:

 SugarContext.init(this);

答案 4 :(得分:0)

请在你的onCreate应用程序类上实现hack findById函数,如下所示

public class App extends SugarApp {
    @Override
    public void onCreate() {
        super.onCreate();

        Audio.findById(Audio.class, (long) 1);
    }
}

将创建您的音频表

答案 5 :(得分:0)

消息java.lang.NoSuchTable:表示有人试图在没有任何参数的情况下调用构造函数。添加默认构造函数应该可以解决这个问题:

public class User 
{
    public User() {
    }
    ..
}