저는 android와 android를 처음 접했고 데이터를 저장하고 queryForId를 사용하여 다시 가져 오려고합니다. 처음에는 잘 작동하지만, 조금만 돌아 다니고 난 후에 ... 나는 클래스에 id 필드가 없다는 예외가 있습니다. 여기 ORMLite가 queryForId를 수행 할 수 없습니다.
클래스@DatabaseTable(tableName="ForeignData")
public class ForeignData implements Serializable {
private static final long serialVersionUID = 3640428963380696279L;
@DatabaseFieldId(generatedId = true)
private Integer id;
@DatabaseFieldSimple(defaultValue = "")
private String name;
public ForeignData(){};
}
의 코드이고 이것은 내가 그것을 호출하는 방법입니다 ...
ForeignData f = new ForeignData();
try {
Dao<ForeignData, Integer> fdao = new DatabaseHelper(getApplicationContext()).getForeignDao();
f.setName("test");
fdao.create(f);
f = fdao.queryForId(f.getId())==null?f:fdao.queryForId(f.getId());
txt1.setText(f.getName());
} catch (SQLException e) {
txt1.setText(e.getMessage());
}
그것은 쿼리 할 수있는 수익
f = fdao.queryForId(f.getId())==null?f:fdao.queryForId(f.getId());
에서 예외를 잡을 ForeignData에는 id 열이 없으므로 -for-id입니다.
나는
@DatabaseField(generatedId=true,columnName="id")
private Integer id;
내가되어 얻을 예외로 ForeignData 클래스의 ID를 변경하는 경우 :
모든 코드를 @GAO 그래서 난 당신이 당신의'onUpgrade' 방법에 대한 올바른 것으로 의심 찾을 보인다. 이것은 확실히 스키마가 일치하지 않는 것처럼 보입니다. 앞으로는 메시지뿐 아니라 스택 추적에서 적어도 두 줄의 버그가 있는지 확인하십시오. – Gray
덕분에 앞으로도 그렇게 할 것입니다. 모든 스택 추적을 보는 데 여전히 익숙하지 않으므로 종종 전혀 보지 않습니다. 버그를 만드는 코드를 확인하십시오. –