sugar orm 是专门针对android orm 的一套框架,简单好用,但是坑可是很多的,昨天在坑里面爬了一天,错误是no such table 。没有这个表,应该是我们配置orm 的时候出现了问题,但是国内比较少关于这方面的东西,一直查不出来问题,在哪。在github 上找错误,看英文终于找到了,希望下一次不要出现这样的错误。
配置如下:
1 .在.gradle中添加配置:
compile 'com.github.satyan:sugar:1.5'
2.AndroidManifest.xml中进行这样的配置
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.hjh.Activity">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:name=".App">
<!--1.创建的数据库db的文件名,将在/data/data/{你的应用包名}/databases下创建对应的文件-->
<!--2.数据库版本号-->
<!--3.是否允许SugarORM记录log-->
<!--4.创建数据库表对应的Bean所在的包的路径-->
<!--对于第四点需要强调一些,SugarORM是通过一个Bean文件来创建一个表的-->
<meta-data android:name="DATABASE" android:value="family.db"/>
<meta-data android:name="VERSION" android:value="1"/>
<meta-data android:name="QUERY_LOG" android:value="true"/>
<meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.hjh.po"/>
</application>
</manifest>
注意这几个地方:
1.application 这个标签中要加一个android:name=“.App” 这个属性之后会讲到。
2.在application中添加在上面所说的meta-data 标签
3.替换android固有的application 换上sugar的app
public class App extends SugarApp{
@Override
public void onCreate() {
super.onCreate();
SugarContext.init(this);
}
@Override
public void onTerminate() {
SugarContext.terminate();
super.onTerminate();
}
}
这个类名就是刚才我们在第二步配置的东西和这个对应上,如何这个就是说我们在处理sugar的东西的使用就不用在进行初始化sugar了。
4.重点!!!
我想大家都应该会这么去配置的,但是还是会出错的话,那就真的有问题了,看了github的issues 终于找到了根源所在:
defaultConfig {
applicationId "com.hjh.Activity"
minSdkVersion 15
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
所在的版本号不能太高了,不然就不好使了,应该是android升级了,sugar没有找到相对的东西,才会导致这样的bug,希望能够早点修复这个问题吧。
顺便说一下,饿 本人要实习,希望能够找到一个实习单位进行实习,我的qq:657864654, 欢迎来骚扰