我正在使用RealM庫將我的值存儲在數據庫中。 問題是,因爲RealM不支持AutoIncrement,所以我試圖通過我自己來實現它。使用RealM時的NullpointerException
這是我的情態類:
public class User extends RealmObject{
@PrimaryKey
private int id;
private String name;
private int rollno;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getRollno() {
return rollno;
}
public void setRollno(int rollno) {
this.rollno = rollno;
}
public int getid() {
return id;
}
public void setid(int id) {
this.id = id;
}
}
我我的主類我有一個名爲insertValues其中我在數據庫中插入數據的功能。
public void insertValues(Realm realm,String name,int rollNo)
{
realm.beginTransaction();
int nextId = (int)(realm.where(User.class).maximumInt("id") + 1); // this line gives me nullpointer error. Please help
User user = realm.createObject(User.class);
user.setName(name);
user.setRollno(rollNo);
realm.commitTransaction();
}
我的logcat:
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at io.realm.RealmQuery.maximumInt(RealmQuery.java:1421)
at realmsample.bd.com.realmsample.MainActivity.insertValues(MainActivity.java:105)
at realmsample.bd.com.realmsample.MainActivity$1.onClick(MainActivity.java:53)
at android.view.View.performClick(View.java:4240)
at android.view.View$PerformClick.run(View.java:17721)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
當你第一次在境界數據庫中添加一個對象,你行'realm.where(User.class).maximumInt(「ID」)'會給你NULL值,因爲沒有在數據庫中添加數據。在獲得最大價值表格數據庫之前,只保留一個if條件。 –