使用 Retrofit 在 SugarRecord 中找不到 table
No table found in SugarRecord using Retrofit
我正在使用 Retrofit 访问数据和存储我正在使用 SugarRecord.I 是 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 和 getter 我没有发布
这是 ArrayFormat 中的 ClsDocument 列表
ClsDocumentList:
public class ClsDocumentList extends SugarRecord {
@SerializedName("SCHEME_ID")
private String sCHEMEID;
@SerializedName("DOCUMENT_TYPE")
private String dOCUMENTTYPE;
}
在onCreate中初始化数据库:
SugarContext.init(getApplicationContext());
这是我的演示代码:
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)
感谢您的指导。
按照下面的代码更改模型 class 文件 ClsDocumentList
。
public class ClsDocumentList extends SugarRecord<ClsDocumentList> {
@SerializedName("SCHEME_ID")
private String sCHEMEID;
@SerializedName("DOCUMENT_TYPE")
private String dOCUMENTTYPE;
}
将您的 SugarRecord
替换为 SugarRecord<ClsDocumentList>
,这会将此 class 映射到 SugarRecord Table
。
有关使用 SugarRecord 创建 Table 的更多信息,请参阅此 link。
我正在使用 Retrofit 访问数据和存储我正在使用 SugarRecord.I 是 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 和 getter 我没有发布 这是 ArrayFormat 中的 ClsDocument 列表 ClsDocumentList:
public class ClsDocumentList extends SugarRecord {
@SerializedName("SCHEME_ID")
private String sCHEMEID;
@SerializedName("DOCUMENT_TYPE")
private String dOCUMENTTYPE;
}
在onCreate中初始化数据库:
SugarContext.init(getApplicationContext());
这是我的演示代码:
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)
感谢您的指导。
按照下面的代码更改模型 class 文件 ClsDocumentList
。
public class ClsDocumentList extends SugarRecord<ClsDocumentList> {
@SerializedName("SCHEME_ID")
private String sCHEMEID;
@SerializedName("DOCUMENT_TYPE")
private String dOCUMENTTYPE;
}
将您的 SugarRecord
替换为 SugarRecord<ClsDocumentList>
,这会将此 class 映射到 SugarRecord Table
。
有关使用 SugarRecord 创建 Table 的更多信息,请参阅此 link。