我在Android应用中使用ORMlite(版本4.48)
这是我的ORMLiteHelper:
public class TrainingOrmLiteHelper extends OrmLiteSqliteOpenHelper {
public static final String TAG = TrainingOrmLiteHelper.class.getSimpleName();
public static final String DATABASE_NAME = "marek.sqlite";
public static final int DATABASE_VERSION = 7;
private Dao<DataModel, Integer> modelDao = null;
public TrainingOrmLiteHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
try {
TableUtils.clearTable(connectionSource, DataModel.class);
Log.d(TAG, "Created");
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {
try {
TableUtils.dropTable(connectionSource, DataModel.class, true);
Log.d(TAG, "Updated");
} catch (SQLException e) {
e.printStackTrace();
}
onCreate(database, connectionSource);
}
public Dao<DataModel, Integer> getModelDao() throws SQLException {
if (modelDao == null) {
modelDao = getDao(DataModel.class);
}
return modelDao;
}
}
和我的数据模型对象类
@DatabaseTable(tableName = "data_model")
public class DataModel {
@DatabaseField(generatedId = true)
int id;
@DatabaseField
String title;
@DatabaseField
String description;
public DataModel() {
}
public DataModel(String title, String description) {
this.title = title;
this.description = description;
}
}
当我尝试对我的数据执行某些操作时:
TrainingOrmLiteHelper helper = new TrainingOrmLiteHelper(this);
DataModel item = new DataModel();
item.description = "ELO";
item.title = "blah blah";
helper.getModelDao().create(item);
我得到错误:
E/SQLiteLog﹕ (1) no such table: data_model
答案 0 :(得分:5)
查看您的代码,您实际上并未创建该表,您需要将createTableIfNotExist添加到onCreate
OrmLiteSqliteOpenHelper
方法中类。
TableUtils.createTableIfNotExists(ConnectionSource connectionSource, Class<T> dataClass);