Вам нужно определить класс с именем DatabaseHandler расширяет SQLiteOpenHelper (добавить эту функцию с общественной спецификации доступа в него), а также поставить все соответствующие функции базы данных в ней. После этого вам нужно инициализировать свой объект в действии, где вы хотите вызвать его функциональность и вызвать требуемую функцию. Вы также можете использовать singleton design pattern для вашего класса DatabaseHandler, если вы используете его в своем приложении.
DatabaseHandler
package package_name;
import java.util.ArrayList;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import <packagename>.Profile;
public class DatabaseHandler extends SQLiteOpenHelper {
private Context context = null;
//private SQLiteDatabase mWDB, mRDB;
private static final String TAG = DatabaseHandler.class.getSimpleName();
/** Database Version <br/> Should change if any changes in DB for higher verion*/
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "db_name";
// Table Names
public static final String TABLE_PROFILE = "TABLE_PROFILE";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.context = context;
}
// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
try {
enableForeignKeysConstraint(db);
db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_PROFILE
+ " (user_id TEXT, email TEXT, name TEXT, address TEXT, address_x TEXT, address_y TEXT,"
+ " image_src TEXT, dob datetime, gender TEXT, profession TEXT, dateCreated datetime,"
+ " dateModified datetime);");
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop table if necessary, here
onCreate(db);
}
@Override
public void onConfigure(SQLiteDatabase db) {
super.onConfigure(db);
enableForeignKeysConstraint(db);
}
/**
* We need to enable foreign keys before executing any query creating a table, also on database
* configuration changes. For it, this method helps.
* @param db SQLiteDatabase
*/
public void enableForeignKeysConstraint(SQLiteDatabase db) {
if (!db.isReadOnly()) {
// Enable foreign key constraints
db.execSQL("PRAGMA foreign_keys=ON;");
}
}
////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////// INSERT DATA ////////////////////////////////////////
/**
* Inserts a profile record into database.
* @param profile
* @param dateCreated
*/
private void insertProfile(Profile profile, String dateCreated) {
SQLiteDatabase db = null;
try {
db = this.getWritableDatabase();
Log.i(TAG, "insertProfile(): Query is processing ...");
ContentValues values = new ContentValues();
values.put("user_id", profile.getUserId());
values.put("name", profile.getName());
values.put("email", profile.getEmail());
long id = db.insert(TABLE_PROFILE, null, values);
if (id != -1)
Log.i(TAG, "insertProfile(): Inserted successfully");
else
Log.i(TAG, "insertProfile(): Insertion failed");
}
catch(Exception e) {
e.printStackTrace();
}
if(db != null)
db.close();
}
////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////// SELECT DATA ////////////////////////////////////////
/**
* To get profile against user id stored into local database.
* @param userId
* @return Profile - An object if exists otherwise null.
*/
public Profile getProfile(String userId) {
Profile profile = null;
String query = "SELECT * FROM "+TABLE_PROFILE+ " WHERE user_id = "+userId+";";
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(query, null);
Log.i(TAG, "getProfile():" + query);
if (cursor.moveToFirst()) {
do {
profile = new Profile();
profile.setUserId(cursor.getString(0));
profile.setEmail(cursor.getString(1));
profile.setName(cursor.getString(2));
} while (cursor.moveToNext());
}
cursor.close();
db.close();
return profile;
}
////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////// DELETE DATA ////////////////////////////////////////
/**
* Deletes the favorite place record against userId.
* @param place_id
*/
public void deleteProfile(String userId) {
SQLiteDatabase db = this.getWritableDatabase();
int deleteCount = db.delete(TABLE_PROFILE, "user_id=" + userId, null);
if(deleteCount > 0)
Log.i(TAG, "deleteProfile(): Deleted profile with id = " + userId);
}
////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////// UPDATE DATA ////////////////////////////////////////
private void updateProfile(Profile profile) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", profile.getName());
db.update(TABLE_PROFILE, values, "user_id = '"+profile.getUserId()+"'", null);
Log.i(TAG,"updateProfile(): Updated profile for userId="+profile.getUserId());
}
}
Профиль
public class Profile {
private String userId;
private String name;
private String email;
public Profile() {
userId = "";
name = "";
email = "";
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
сделать один общий класс и функции и вызывать его из любой деятельности –
Как насчет создать родительский класс и ребенок расширяет его? –
сделайте абстрактную деятельность и поместите в нее функцию, которая имеет общую функциональность и расширяет эту деятельность всеми вашими действиями. –