使用Retrofit在SugarRecord中找不到表格

时间:2018-03-19 08:54:17

标签: android sqlite sugarorm sugarrecord

我正在使用Retrofit访问数据和存储我正在使用SugarRecord。我是SugarRecord Orm的新手。

清单:

meta-data
        android:name="DATABASE"
        android:value="sugar_example.db"
meta-data
        android:name="VERSION"
        android:value="3"
meta-data
        android:name="QUERY_LOG"
        android:value="false"
meta-data
        android:name="DOMAIN_PACKAGE_NAME"
        android:value="com.example.abhishek.ModelClass"

ClsDocument:

public class ClsDocument {
@SerializedName("SUCCESS")
@Expose
private String sUCCESS;
@SerializedName("DATA")
@Expose
private List<ClsDocumentList> dATA = null;
}

Setter and getter我还没有发布 这是在ArrayFormat中的ClsDocument List 的 ClsDocumentList:

public class ClsDocumentList extends SugarRecord {
@SerializedName("SCHEME_ID")
private String sCHEMEID;
@SerializedName("DOCUMENT_TYPE")
private String dOCUMENTTYPE;
}

在onCreate中初始化数据库:

SugarContext.init(getApplicationContext());

这是我的DemoCode:

private void demoRetrofit() {
    InterfaceDocument interfaceDocument = ApiClient.getClient().create(InterfaceDocument.class);
    Call<ClsDocument> call = interfaceDocument.CLS_DOCUMENT_CALL();

    call.enqueue(new Callback<ClsDocument>() {
        @Override
        public void onResponse(Call<ClsDocument> call, Response<ClsDocument> response) {
            Log.e(TAG, "onResponse: "+response.body().getSUCCESS() );

            String success=response.body().getSUCCESS();
            if(success.equalsIgnoreCase("1")){
                for (ClsDocumentList objList:response.body().getDATA()) {
                    objList.save();//To save in SugarRecord
                }
            }
        }

        @Override
        public void onFailure(Call<ClsDocument> call, Throwable t) {

        }
    });
}

这是一个日志:

android.database.sqlite.SQLiteException: no such table: CLS_DOCUMENT_LIST (code 1): , while compiling: INSERT OR REPLACE  INTO CLS_DOCUMENT_LIST(ID,S_CHEMEID,D_OCUMENTNAME,D_OCUMENTTYPE,S_ELECTTYPE,D_OCUMENTMODULE,M_ANDATORY) VALUES (?,?,?,?,?,?,?)
                                                                              at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)

感谢你的指导。

1 个答案:

答案 0 :(得分:2)

按以下编码更改模型类文件ClsDocumentList

public class ClsDocumentList extends SugarRecord<ClsDocumentList> {
    @SerializedName("SCHEME_ID")
    private String sCHEMEID;

    @SerializedName("DOCUMENT_TYPE")
    private String dOCUMENTTYPE;
}

将您的SugarRecord替换为SugarRecord<ClsDocumentList>,将此课程映射到SugarRecord Table

有关更多信息,请参阅此link以使用SugarRecord创建表。