首先,我到处寻找解决方案,但我还没有找到解决表创建常见错误的方法:
引起:android.database.sqlite.SQLiteException:没有这样的表: EVENT(代码1):在编译时:INSERT OR REPLACE INTO EVENT
我的清单:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.company.something.something2">
...
<meta-data android:name="DATABASE" android:value="sugarexample.db" />
<meta-data android:name="VERSION" android:value="4" />
<meta-data android:name="QUERY_LOG" android:value="true" />
<meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.company.something.something2.Entities" />
我的实体:
package com.company.something.something2.Entities;
import com.orm.SugarRecord;
public class Event extends SugarRecord {
private String description;
private String title;
private String photo;
public Event() {
}
//setters and getters
}
我的活动(用于调试):
...
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SugarContext.init(getApplicationContext());
com.company.something.something2.Entities.Event book =
new com.company.something.something2.Entities.Event();
book.setId((long) 1);
book.setTitle("test");
book.setDescription("de");
book.setPhoto("someurl");
book.save();
我尝试过:
com.company.something.something2
P.S:我正在使用SugarORM 1.5,Gradle 2.1.3
有没有人有任何想法?
答案 0 :(得分:2)
看起来你的桌子没有创建。 SugarOrm需要一个android Application 类,它可以从中开始创建或管理其表模式和其他必要的东西。
根据您的代码,您已在活动中定义了SugarContext.init(getApplicationContext());
。如果您没有将课程扩展到 SugarApp 课程,那么这应该是应用程序类的一部分。
因此将此行移至Application类的 onCreate 还在onTerminate()
中添加以下行 SugarContext.terminate();
因此,您的Application类将如下所示:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
SugarContext.init(this);
}
@Override
public void onTerminate() {
super.onTerminate();
SugarContext.terminate();
}
}
并在Androidmanifest.xml文件中声明此类
<application
android:name=".MyApplication"
.. rest of the code