Search code examples
androidsqliteopenhelper

I can't insert data


I'm making an app to insert data. But when I click on add button by giving all the details. App return me to previous page This is the way I create insert class

    public class InsertStudent extends AppCompatActivity {

            Button instudent;
            DBHelper dbHelper;
            EditText sName,sDOB,sAddress;
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_insert_student);

                instudent = findViewById(R.id.btninsert);
                sName = findViewById(R.id.insertname);
                sDOB = findViewById(R.id.insertdob)

;
            sAddress = findViewById(R.id.insertaddress);

Below is the way I coded to insert data

instudent.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                    String userName = sName.getText().toString();
                    String dateB = sDOB.getText().toString();
                    String addr = sAddress.getText().toString();

                    boolean count = dbHelper.addInfo(userName,dateB,addr );

                    if(count =true){
                        Toast.makeText(InsertStudent.this, "Inserted!", Toast.LENGTH_SHORT).show();
                    }
                    else{
                        Toast.makeText(InsertStudent.this, "Something went wrong!", Toast.LENGTH_SHORT).show();
                    }
                }
            });

This is addinfo method in DBHelper class

public boolean addInfo(String stdName, String stdDOB, String stdAddress){

        SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();

        ContentValues contentValues = new ContentValues();
        contentValues.put(UserProfile.Users.COLUMN_STDNAME, stdName);
        contentValues.put(UserProfile.Users.COLUMN_DATEOFBIRTH, stdDOB);
        contentValues.put(UserProfile.Users.TABLE_ADDRESS, stdAddress);


        long result = sqLiteDatabase.insert(UserProfile.Users.TABLE_NAME, null, contentValues);
        if(result==1)
            return false;
        else
            return  true;

    }
}

Solution

    1. The insert method of "SQLiteDatabase" class doesn't return the count, it's returns the id of the inserted row. so you are checking if return result is 1, it's a true process, but it's not a way to check the insert method. It means you need to check if there is any return result, your insert action performed successfully, but if there is a problem, the application will crash.

    2. Make sure you created the table that you want to insert data in it.