Win a copy of Spring Boot in Practice this week in the Spring forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Tim Cooke
  • Ron McLeod
  • Jeanne Boyarsky
  • Paul Clapham
Sheriffs:
  • Liutauras Vilda
  • Henry Wong
  • Devaka Cooray
Saloon Keepers:
  • Tim Moores
  • Stephan van Hulst
  • Tim Holloway
  • Al Hobbs
  • Carey Brown
Bartenders:
  • Piet Souris
  • Mikalai Zaikin
  • Himai Minh

Help me in debugging this code

 
Greenhorn
Posts: 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Can anyone please explain me this code ?

Final class called ‘UserProfile’. Make the default constructor private. Create an inner class called ‘Users’ by implementing ‘BaseColumn’ interface. Inside the inner class, define the columns you need along with the table.

   import android.provider.BaseColumns;
   
   public final class  UserProfile {
       private UserProfile(){}
   
       public static class  Users implements BaseColumns{
   
           public static final String Table_Name = "UserInfo";
           public static final String Column_Username = "username";
           public static final String Column_dateOfBirth = "dateofBirth";
           public static final String Column_Gender = "Gender";
   
       }
   }

Create another class called DBHelper inside the database folder by extending the class SQLiteOpenHelper as its superclass. Implement the relevant methods and constructors.
Database Table Name: UserInfo
Column Name:    _ID - Primary Key | username | dateOfBirth | Gender

   public class DBHelper extends SQLiteOpenHelper{
       private static final String DB_NAME = "profiler";
   
       public DBHelper(Context context){
           super(context,DB_NAME,null,1);
       }
   
       @Override
       public void onCreate(SQLiteDatabase db) {
           String sql = "CREATE TABLE " + UserProfile.Users.TABLE_NAME + "("
                   + UserProfile.Users._ID + "INTEGER PRIMARY KEY, "
                   + UserProfile.Users.COLUMN_USERNAME + "TEXT,"
                   + UserProfile.Users.COLUMN_DATEOFBIRTH + "TEXT,"
                   + UserProfile.Users.COLUMN_GENDER + "TEXT)";
           db.execSQL(sql);
       }
   
       @Override
       public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
   
       }
   }

Implement a method named addInfo() to store user details details .

   public boolean addInfor(String username, String dob, String gender){
       ContentValues contentValues = new ContentValues();
       contentValues.put(UserProfile.Users.COLUMN_USERNAME, username);
       contentValues.put(UserProfile.Users.COLUMN_DATEOFBIRTH, dob);
       contentValues.put(UserProfile.Users.COLUMN_GENDER, gender);
   
       SQLiteDatabase sqLiteDatabase = getWritableDatabase();
       long result = sqLiteDatabase.insert(UserProfile.Users.TABLE_NAME,null,contentValues);
       sqLiteDatabase.close();
       if (result >=0)
           return true;
       else
           return false;
   }

Implement a method named updateInfor() to modify stored user details based on the user ID. Method must return a Boolean value based on the success or failure.

   public boolean updateInfor(String username,String dob, String gender){
       ContentValues contentValues = new ContentValues();
       contentValues.put(UserProfile.Users.COLUMN_USERNAME, username);
       contentValues.put(UserProfile.Users.COLUMN_DATEOFBIRTH, dob);
       contentValues.put(UserProfile.Users.COLUMN_GENDER, gender);
   
       SQLiteDatabase sqLiteDatabase = getWritableDatabase();
       String[] selectionArg = {username};
       int rows = sqLiteDatabase.update(UserProfile.Users.TABLE_NAME,contentValues, UserProfile.Users.COLUMN_USERNAME + "= ?",selectionArg);
       sqLiteDatabase.close();
   
       if (rows >= 0)
           return true;
       else
           return false;
   }

Implement a method named readAllInfor() to retrieve all the user details stored in the database table.

   public List readAllInfor(){
       List users = new ArrayList<>();
   
       SQLiteDatabase sqLiteDatabase = getReadableDatabase();
       Cursor cursor = sqLiteDatabase.rawQuery("SELECT * FROM "+ UserProfile.Users.TABLE_NAME,null);
       while (cursor.moveToNext()){
           String value = cursor.getString(cursor.getColumnIndexOrThrow(UserProfile.Users.COLUMN_USERNAME));
           users.add(value);
       }
       sqLiteDatabase.close();
       return users;
   }

Overload the method readAllInfor() to retrieve the user details based on the primary key.

   public List readAllInfor(int ID){
       List users = new ArrayList<>();
       SQLiteDatabase sqLiteDatabase = getReadableDatabase();
       String[] selection = { "WHERE " + UserProfile.Users._ID + "=" + ID};
       Cursor cursor = sqLiteDatabase.rawQuery("SELECT *  FROM "+ UserProfile.Users.TABLE_NAME, selection);
       if (cursor.moveToNext()) {
           users.add(cursor.getString(1));
       }while(cursor.moveToNext());
       sqLiteDatabase.close();
       return users;
   }

Implement a method named deleteInfo() to delete a specific user

   public void deleteInfo(String username){
     SQLiteDatabase sqLiteDatabase = getWritableDatabase();
     String sql = UserProfile.Users.COLUMN_USERNAME + "LIKE ?";
     String[] selection = {username};
     sqLiteDatabase.delete(UserProfile.Users.TABLE_NAME,sql,selection);
     sqLiteDatabase.close();
   }

Create intent objects to start
ProfileManagement activity from ‘Register’ button

   public void register(View view){
   
       Intent intent = new Intent(Home.this, ProfileManagement.class);
       startActivity(intent);
   }

EditProfile activity from ‘Update Profile’ button

   public void editProfile(View view){
       Intent intent = new Intent(ProfileManagement.this, EditProfile.class);
       startActivity(intent);
   }

Call addInfor() method implemented in DbHandler class from the onClick event of Register button. Display a Toast Message indicating success or failure.

   public class ProfileManagement extends AppCompatActivity {
   
       private EditText username;
       private EditText dob;
       private RadioGroup radGroup;
       private RadioButton radbtn;
   
   
       @Override
       protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_profile_management);
   
           username = (EditText) findViewById(R.id.editText3);
           dob = (EditText) findViewById(R.id.editText4);
           radGroup = (RadioGroup) findViewById(R.id.radG);
       }
   
       public void editProfile(View view){
           Intent intent = new Intent(ProfileManagement.this, EditProfile.class);
           startActivity(intent);
       }
   
       public void registerUser(View view){
   
           int radioButtonId = radGroup.getCheckedRadioButtonId();
           radbtn = (RadioButton) findViewById(radioButtonId);
   
           DBHelper dbHelper = new DBHelper(getBaseContext());
           boolean value = dbHelper.addInfo(username.getText().toString(), dob.getText().toString(), radbtn.getText().toString());
   
           if(value == true)
               Toast.makeText(getApplicationContext(), "Success", Toast.LENGTH_SHORT).show();
           else
               Toast.makeText(getApplicationContext(), "Fail", Toast.LENGTH_SHORT).show();
       }
   }

Call readAllInfor() method implemented in DbHandler class from the onClick event of the Search button to retrieve profile of a specific user.

   public class EditProfile extends AppCompatActivity {
   
       private TextView showBox;
       private EditText username;
       private EditText dob;
       private RadioGroup rg5;
       private RadioButton radiobutton;
   
       @Override
       protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_edit_profile);
           showBox = (TextView) findViewById(R.id.showBox);
           username = (EditText) findViewById(R.id.editText3un);
           dob = (EditText) findViewById(R.id.editTextdb);
           rg5 = (RadioGroup) findViewById(R.id.rad66);
       }
   
       @RequiresApi(api = Build.VERSION_CODES.O)
       public void show(View view){
   
               DBHelper dbHelper = new DBHelper(getBaseContext());
               List userList = dbHelper.readAllInfo();
               String userString = String.join("\n", userList);
               showBox.setText(userString);
   
       }
   
       public void delete(View view){
           DBHelper dbHelper = new DBHelper(getBaseContext());
           dbHelper.deleteInfo(username.getText().toString());
       }
   
       public void edit(View view){
                   int radId = rg5.getCheckedRadioButtonId();
                   radiobutton = (RadioButton) findViewById(radId);
   
                   DBHelper dbHelper = new DBHelper(getBaseContext());
                   dbHelper.updateInfo(username.getText().toString(), dob.getText().toString(), radiobutton.getText().toString());
   
       }
   }

 
Rancher
Posts: 187
7
Mac OS X IntelliJ IDE
  • Likes 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I think you need to ask a more specific question..
 
Saloon Keeper
Posts: 7391
170
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
It looks like an exercise that you should be doing - is that the case? If so, any question as to what you should be doing with it are probably best directed at your instructor.
 
reply
    Bookmark Topic Watch Topic
  • New Topic