Please see if the below code is correct. Thanks in advance.
This is done for a User login and management system that i'm currently developing for an in house social media forum. I started using android studio for developing recently.
Below code was typed in a Database class called DBHandler.
I have created as per the below comment from stack over flow,
Sqlite helper class helps us to manage database creation and version management. SQLiteOpenHelper takes care of all database management activities. To use it, 1.Override onCreate(), onUpgrade() methods of SQLiteOpenHelper. Optionally override onOpen() method. 2.Use this subclass to create either a readable or writable database and use the SQLiteDatabase's four API methods insert(), execSQL(), update(), delete() to create, read, update and delete rows of your table.
package Database;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import com.example.user.model_paper.User;
import com.example.user.model_paper.UserProfile;
import java.util.ArrayList;
import java.util.List;
public class DBHelper extends SQLiteOpenHelper {
public static final String DATABASE="user.db";
public DBHelper(Context context) {
super(context, DATABASE, null, 1);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
String query="CREATE TABLE "+ UserProfile.Users.TABLE_NAME +" ( "+
UserProfile.Users._ID +" INTEGER PRIMARY KEY, "+
UserProfile.Users.COLUMN_NAME +" TEXT, "+
UserProfile.Users.COLUMN_PASSWORD +" TEXT, "+
UserProfile.Users.COLUMN_DOB +" TEXT, "+
UserProfile.Users.COLUMN_GENDER +" TEXT);";
sqLiteDatabase.execSQL(query);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS "+ UserProfile.Users.TABLE_NAME);
onCreate(sqLiteDatabase);
}
public long addInfo(User user){
SQLiteDatabase db=getWritableDatabase();
ContentValues values=new ContentValues();
values.put(UserProfile.Users.COLUMN_NAME,user.getUserName());
values.put(UserProfile.Users.COLUMN_PASSWORD,user.getPassword());
values.put(UserProfile.Users.COLUMN_DOB,user.getDob());
values.put(UserProfile.Users.COLUMN_GENDER,user.getGender());
long id=db.insert(UserProfile.Users.TABLE_NAME,null,values);
return id;
}
public boolean updateInfo(User user){
SQLiteDatabase db=getReadableDatabase();
ContentValues values=new ContentValues();
values.put(UserProfile.Users.COLUMN_NAME,user.getUserName());
values.put(UserProfile.Users.COLUMN_PASSWORD,user.getPassword());
values.put(UserProfile.Users.COLUMN_DOB,user.getDob());
values.put(UserProfile.Users.COLUMN_GENDER,user.getGender());
String selection= UserProfile.Users._ID+" = ?";
String[] selectionArgs={Integer.toString(user.getId())};
int count=db.update(UserProfile.Users.TABLE_NAME,values,selection,selectionArgs);
if (count>0)
return true;
else
return false;
}
public List<User> readAllInfo(){
SQLiteDatabase db=getReadableDatabase();
String[] projection={UserProfile.Users._ID,
UserProfile.Users.COLUMN_NAME,
UserProfile.Users.COLUMN_PASSWORD,
UserProfile.Users.COLUMN_DOB,
UserProfile.Users.COLUMN_GENDER};
String order= UserProfile.Users._ID+" ASC";
Cursor cursor = db.query(UserProfile.Users.TABLE_NAME,projection,null,null,null,null,order);
List<User> list = new ArrayList();
User user=new User();
while(cursor.moveToNext()){
user.setId(cursor.getInt(cursor.getColumnIndex(UserProfile.Users._ID)));
user.setUserName(cursor.getString(cursor.getColumnIndex(UserProfile.Users.COLUMN_NAME)));
user.setPassword(cursor.getString(cursor.getColumnIndex(UserProfile.Users.COLUMN_PASSWORD)));
user.setDob(cursor.getString(cursor.getColumnIndex(UserProfile.Users.COLUMN_DOB)));
user.setGender(cursor.getString(cursor.getColumnIndex(UserProfile.Users.COLUMN_GENDER)));
list.add(user);
}
return list;
}
public User readAllInfo(int id){
SQLiteDatabase db=getReadableDatabase();
String[] projection={UserProfile.Users._ID,
UserProfile.Users.COLUMN_NAME,
UserProfile.Users.COLUMN_PASSWORD,
UserProfile.Users.COLUMN_DOB,
UserProfile.Users.COLUMN_GENDER};
String selection= UserProfile.Users._ID+" = ?";
String[] selectionArgs={Integer.toString(id)};
String order= UserProfile.Users._ID+" ASC";
Cursor cursor = db.query(UserProfile.Users.TABLE_NAME,projection,selection,selectionArgs,null,null,order);
User user=new User();
while(cursor.moveToNext()){
user.setId(cursor.getInt(cursor.getColumnIndex(UserProfile.Users._ID)));
user.setUserName(cursor.getString(cursor.getColumnIndex(UserProfile.Users.COLUMN_NAME)));
user.setPassword(cursor.getString(cursor.getColumnIndex(UserProfile.Users.COLUMN_PASSWORD)));
user.setDob(cursor.getString(cursor.getColumnIndex(UserProfile.Users.COLUMN_DOB)));
user.setGender(cursor.getString(cursor.getColumnIndex(UserProfile.Users.COLUMN_GENDER)));
}
return user;
}
public boolean deleteInfo(int id){
SQLiteDatabase db=getReadableDatabase();
String selection= UserProfile.Users._ID+" = ?";
String[] selectionArgs={Integer.toString(id)};
int count=db.delete(UserProfile.Users.TABLE_NAME,selection,selectionArgs);
if(count>0)
return true;
else
return false;
}
}