У вас есть ряд проблем, в основном одинаковых, это неверно / нет создания экземпляров объектов.
Следующий код работает и был проверен.Исправления комментируются с // <<<<<<<<<< </strong>.
Обратите внимание, что для тестирования была добавлена дополнительная строка для предоставления значения для счетчика и что строка, которая пытается получить значение из счетчика, была закомментирована.
Изменений нетбыло сделано в databaseHandler.java
Student_Registartion.java : -
public class Student_Registartion extends AppCompatActivity {
private EditText name,roll,register,contact; //<<<<<<<<<< ADDED roll
databaseHandler handler; //<<<<<<<<<< ADDED (used instead of AppBase.handler)
Activity activity = this;
Spinner spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_student__registartion);
//<<<<<<<<<< ADDED BLOCK
name = this.findViewById(R.id.name);
roll = this.findViewById(R.id.roll);
register = this.findViewById(R.id.register);
contact = this.findViewById(R.id.contact);
//<<<<<<<<<< END OF ADDED BLOCK
handler = new databaseHandler(this); //<<<<<<<<<< ADDED
spinner = (Spinner) findViewById(R.id.spinner);
/* ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, AppBase.divisions);
spinner.setAdapter(adapter);*/
Button btn = (Button) findViewById(R.id.btnSave);
assert btn != null;
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
saveToDatabase(v);
}
});
}
public void saveToDatabase(View view) {
//<<<<<<<<<<< REMOVED BLOCK
EditText name = (EditText)findViewById(R.id.name);
EditText roll = (EditText)findViewById(R.id.roll);
EditText register = (EditText)findViewById(R.id.register);
EditText contact = (EditText)findViewById(R.id.contact);
//<<<<<<<<<<< END OF REMOVED BLOCK
//String classSelected = spinner.getSelectedItem().toString(); //<<<<<<<<<< commeneted out
String classSelected = "MyCLass"; //<<<<<<<<<< Temporary get around for no spinner data
if(name.getText().length()<2||roll.getText().length()==0||register.getText().length()<2||
contact.getText().length()<2||classSelected.length()<2)
{
AlertDialog.Builder alert = new AlertDialog.Builder(activity);
alert.setTitle("Invalid");
alert.setMessage("Insufficient Data");
alert.setPositiveButton("OK", null);
alert.show();
return;
}
String qu = "INSERT INTO STUDENT VALUES('" +name.getText().toString()+ "'," +
"'" + classSelected +"',"+
"'" + register.getText().toString().toUpperCase() +"',"+
"'" + contact.getText().toString() +"',"+
"" + Integer.parseInt(roll.getText().toString()) +");";
Log.d("Student Reg" , qu);
handler.execAction(qu); //<<<<<<<<<< changed
qu = "SELECT * FROM STUDENT WHERE regno = '" + register.getText().toString() + "';";
Log.d("Student Reg" , qu);
if(handler.execQuery(qu)!=null) //<<<<<<<<< changed
{
Toast.makeText(getBaseContext(),"Student Added", Toast.LENGTH_LONG).show();
this.finish();
}
}
}
Результаты тестирования
Вот лог изпрогон, который успешно добавляет данные (Toasts Произошла ошибка для execAction для дубликата, Toasts Student Добавлен и отображает диалоговое окно, когда данные не вводятся): -
09-18 20:45:23.160 1379-1379/so52386209.so52386209 D/Student Reg: INSERT INTO STUDENT VALUES('harold','MyCLass','BLAH','blah',54321);
09-18 20:45:23.160 1379-1379/so52386209.so52386209 I/databaseHandler: INSERT INTO STUDENT VALUES('harold','MyCLass','BLAH','blah',54321);
09-18 20:45:23.160 1379-1379/so52386209.so52386209 E/databaseHandler: INSERT INTO STUDENT VALUES('harold','MyCLass','BLAH','blah',54321);
09-18 20:45:23.164 1379-1379/so52386209.so52386209 D/Student Reg: SELECT * FROM STUDENT WHERE regno = 'blah';
09-18 20:45:23.212 1379-1379/so52386209.so52386209 W/IInputConnectionWrapper: showStatusIcon on inactive InputConnection
09-18 20:45:23.680 1379-1379/so52386209.so52386209 D/OpenGLRenderer: TextureCache::flush: target size: 2284
TextureCache::callback: name, removed size, mSize = 57, 1728, 2080
09-18 20:49:49.900 1379-1379/so52386209.so52386209 W/EGL_genymotion: eglSurfaceAttrib not implemented
09-18 20:49:49.916 1379-1379/so52386209.so52386209 D/OpenGLRenderer: TextureCache::get: create texture(0xb8f77208): name, size, mSize = 158, 1728, 3808
09-18 20:49:58.896 1379-1382/so52386209.so52386209 D/dalvikvm: GC_CONCURRENT freed 223K, 9% free 6603K/7239K, paused 10ms+0ms, total 14ms
09-18 20:50:24.516 1379-1379/so52386209.so52386209 D/Student Reg: INSERT INTO STUDENT VALUES('ian','MyCLass','77889900','something',12345);
09-18 20:50:24.516 1379-1379/so52386209.so52386209 I/databaseHandler: INSERT INTO STUDENT VALUES('ian','MyCLass','77889900','something',12345);
09-18 20:50:24.520 1379-1379/so52386209.so52386209 D/Student Reg: SELECT * FROM STUDENT WHERE regno = '77889900';