Я пытаюсь создать таблицу администратора. Ввод ввода из приложения и добавление его в таблицу. Мой класс admin используется для получения и установки значений. Я много пробовал, но не смог идентифицировать проблему.Почему я получаю ошибку ограничения SQLlite (Code = 19), даже если я не оставляю ни одного поля null?
Это из моего класса Data Base Helper
@Override
public void onCreate(SQLiteDatabase db) {
String query_create_administrator="create table "+TBL_ADMINISTRATOR+" ("+ADMIN_ID+" INTEGER PRIMARY KEY, "+ADMIN_NAME+
" TEXT, "+ADMIN_MAIL+" TEXT, "+ADMIN_PASSWORD+" TEXT, "+ADMIN_CONTACT+" TEXT, "+ADMIN_ADDRESS+" TEXT, "+
ADMIN_ROLE+" TEXT, "+STATUS+" TEXT)";
String query_create_student="create table "+TBL_STUDENT+" ("+STUDENT_ID+" INTEGER PRIMARY KEY, "
+STUDENT_PID+" TEXT, "+STUDENT_NAME+" TEXT, "+STUDENT_MAIL+" TEXT, "+STUDENT_PASSWORD+" TEXT, "
+STUDENT_CONTACT+" TEXT, "+STUDENT_ADDRESS+" TEXT, "+STUDENT_COURSE+" TEXT, "+STUDENT_YEAR+" TEXT, "
+STUDENT_BRANCH+" TEXT)";
db.execSQL(query_create_administrator);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public long registerAdmin(Administrator obj){
SQLiteDatabase db=getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put(ADMIN_ID,obj.getId());
cv.put(ADMIN_NAME,obj.getName());
cv.put(ADMIN_MAIL,obj.getMail());
cv.put(ADMIN_PASSWORD,obj.getPassword());
cv.put(ADMIN_CONTACT,obj.getContact());
cv.put(ADMIN_ADDRESS,obj.getAddress());
cv.put(ADMIN_ROLE,obj.getRole());
cv.put(STATUS,obj.getStatus());
db.insert(TBL_ADMINISTRATOR,null,cv);
long done=3;
return done;
}
Это метод из класса активности
public void register(View v){
long check=0;
obj=new Administrator();
SchoolDBHandler db=new SchoolDBHandler(this);
String n,m,p,c,a;
n=name.getText().toString();
m=mail.getText().toString();
p=pass.getText().toString();
c=contact.getText().toString();
a=address.getText().toString();
if(n.equalsIgnoreCase("")||m.equalsIgnoreCase("")||p.equalsIgnoreCase("")||c.equalsIgnoreCase("")||a.equalsIgnoreCase(""))
{
Toast.makeText(getApplicationContext(),"All fields are mandatory",Toast.LENGTH_SHORT).show();
}
else {
obj.setName(n);
obj.setMail(m);
obj.setPassword(p);
obj.setContact(c);
obj.setAddress(a);
obj.setStatus("Active");
if(role_select2!=null)obj.setRole(role_select2);
check=db.registerAdmin(obj);
if(check>0) {
resetEditTextxs();
Toast.makeText(getApplicationContext(),"Successfully Created",Toast.LENGTH_SHORT).show();
}
else Toast.makeText(getApplicationContext(),"Error",Toast.LENGTH_SHORT).show();
}
}
Это журнал ошибок:
E/База данных: Ошибка ввода статуса = Активный адрес = AAA email = AAA name = AAA role = parent contact = 1211 eid = 0 pass = AAA andr Код ошибки 19:: oid.database.sqlite.SQLiteConstraintException ограничение не удалось на android.database.sqlite.SQLiteStatement.native_execute (нативный метод) на android.database.sqlite.SQLiteStatement.execute (SQLiteStatement.java:61) на андроид .database.sqlite.SQLiteDatabase.insertWithOnConflict (SQLiteDatabase.java:1582) в android.database.sqlite.SQLiteDatabase.insert (SQLiteDatabase.java:1426) at com.thebitshoes.classproject.dao.SchoolDBHandler.registerAdmin (SchoolDBHandler.java : 191) at com.thebitshoes.classproject.AdminSignUp.register (AdminSignUp.java:109) по адресу java.lang.reflect.Method.invokeNative (собственный метод) на java.lang.reflect.Method.invoke (Method.java:507) на android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick (AppCompatViewInflater.java:288) на android.view.View.performClick (View.java:2485) на android.view.View $ PerformClick.run (View.java:9080) на android.os.Handler.handleCallback (Handler.java:587) на android.os.Handler.dispatchMessage (Handler.java:92) на android.os.Looper.loop (Looper.java:130) на android.app.ActivityThread.main (ActivityThread.java:3683) на java.lang.reflect.Method.invokeNative (Нативный метод) at java.lang.reflect.Method.invoke (Method.java:507) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:839) at com.android.internal.os. ZygoteInit.main (ZygoteInit.java:597) на dalvik.system.NativeStart.main (Native Method)
Что такое 'eid = 0'? –
Думаю, у вас уже есть запись, где eid = 0, и вы пытаетесь добавить другую с 0. – MikeT
ADMIN_ID = "eid"; – ThePercept