Как добавить две базы данных в моем приложении? Это хорошая практика? - PullRequest
0 голосов
/ 03 октября 2019

Я работаю над приложением, которое требует извлечения видео с сервера, и мне нужна аутентификация пользователя, когда пользователь может просматривать видео, только если он заплатил плату. Теперь кто-то предложил мне поработать с двумя базами данных, а именно извлечь видео из облачной базы данных (это быстро) и использовать Firebase для хранения пользовательской информации. Теперь проблема в том, что я не знаю, как это сделать и стоит ли использовать две базы данных в одном проекте.

Пожалуйста, помогите.

Ответы [ 3 ]

2 голосов
/ 03 октября 2019

Нет технической проблемы с использованием нескольких баз данных в приложении. Фактически, в зависимости от того, как вы определяете базу данных, вероятно, уже используется несколько баз данных, прежде чем ваш код даже будет выполнен.

Просто следуйте документации по каждой из баз данных, чтобы добавить их в приложение, ивзаимодействовать с ними. Если вы застряли с одним из них, опубликуйте вопрос с минимальными шагами , как любой может воспроизвести эту проблему . Чаще всего для этого потребуется только одна из баз данных.

1 голос
/ 03 октября 2019

Как вы сказали, кто-то советует вам использовать две базы данных.

Firebase Предоставляет вам два разных типа базы данных.

База данных Firebase Realtime и Firestore . Для получения дополнительной информации по данной ссылке доступны документы.

Для структуры базы данных для вашего приложения.

1. Структура базы данных Firestore:

User
  -> user_id(uid of [Firebase Auth][3])
         - name
         - user_payment : Paid or unpaid
         - user other details

2. Структура базы данных Firebase Realtime:

Users
  ->paid_users(uid)
        - user details
  ->unpaid users(uid)
        - user details

Из приведенной выше структуры вы (->) используете этот символ как Коллекция и (-) этот символ используется для Поля Коллекции или Документа. если вам нужны подробности, просто прокомментируйте.

0 голосов
/ 03 октября 2019

делать или не делать, это зависит от ситуации, но здесь полностью рабочий код для добавления двух баз данных в приложение для Android.
Два отдельных файла для двух баз данных и одного MainActivity.java

  1. DatabaseFaculty.java
  2. DatabaseStudent.java
  3. MainActivity.java


DatabaseFaculty.java

public class DatabaseFaculty {
public static final String DATABASE_NAME="dbfaculty";
public static final String TABLE_NAME="tablefaculty";
public static final int DATABSE_VERSION=1;


public static final String FID="fid";
public static final String FNAME="fname";


//to create a table
private static final String TABLE_CREATE_FACULTY="create table tablefaculty(fid INTEGER, fname TEXT);";

private Context context;
SQLiteDatabase db;  // manipulation with database
DatabaseHelper dbhelper;

public DatabaseFaculty(Context ctx) {
    // TODO Auto-generated constructor stub
    this.context=ctx;
    dbhelper=new DatabaseHelper(ctx);
}


//SQLITEOpenHelper has methods to creae and open
class DatabaseHelper extends SQLiteOpenHelper
{
    //DatabaseHelper's constructor will create the database
    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABSE_VERSION);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL(TABLE_CREATE_FACULTY);
        Log.d("table is created..","tablefaculty");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS");
        onCreate(db);
    }


}


public DatabaseFaculty Open() throws SQLException
{
        db=dbhelper.getWritableDatabase();
        return this;
}

public void close()
{
    dbhelper.close();
}

public long insertData(int fid,String fname)
{
        ContentValues initialvalues=new ContentValues();

        initialvalues.put(FID, fid);
        initialvalues.put(FNAME,fname);

        return db.insert(TABLE_NAME, null,initialvalues);

}

public Cursor getNames()
{
    String query="SELECT fname FROM "+TABLE_NAME;
    Cursor cur=db.rawQuery(query, null);
    return cur;
}


public void getFacultyDetail(String rfid) {
    // TODO Auto-generated method stub
    db.delete(TABLE_NAME,  FID + " = ?",  new String[] { rfid});
    Log.d("Delete called....","Delete called.....");

}
}



DatabaseStudent.java

public class DatabaseStudent {
public static final String DATABASE_NAME="dbstudent";
public static final String TABLE_NAME="tablestudent";
public static final int DATABSE_VERSION=1;


public static final String ROLLNO="rollno";
public static final String SNAME="sname";
public static final String CITY="city";


//to create a table
private static final String TABLE_CREATE_STUDENT="create table tablestudent(rollno INTEGER, sname TEXT, city TEXT);";

private Context context;
SQLiteDatabase db;  // manipulation with database
DatabaseHelper dbhelper;

public DatabaseStudent(Context ctx) {
    // TODO Auto-generated constructor stub
    this.context=ctx;
    dbhelper=new DatabaseHelper(ctx);
}


//SQLITEOpenHelper has methods to creae and open
class DatabaseHelper extends SQLiteOpenHelper
{
    //DatabaseHelper's constructor will create the database
    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABSE_VERSION);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL(TABLE_CREATE_STUDENT);
        Log.d("table is created..","tablestudent");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS");
        onCreate(db);
    }


}


public DatabaseStudent Open() throws SQLException
{
        db=dbhelper.getWritableDatabase();
        return this;
}

public void close()
{
    dbhelper.close();
}

public long insertData(int rollno,String sname,String city)
{
        ContentValues initialvalues=new ContentValues();

        initialvalues.put(ROLLNO, rollno);
        initialvalues.put(SNAME,sname);
        initialvalues.put(CITY,city);

        return db.insert(TABLE_NAME, null,initialvalues);

}

public Cursor getNames()
{
    String query="SELECT fname FROM "+TABLE_NAME;
    Cursor cur=db.rawQuery(query, null);
    return cur;
}




public void deleteStudentDetail(String rrollno) {
    // TODO Auto-generated method stub
    db.delete(TABLE_NAME,  ROLLNO + " = ?",  new String[] { rrollno});
    Log.d("Delete called....","Delete called.....");

}
}



MainActivity.java

public class MainActivity extends AppCompatActivity {

DatabaseFaculty databaseFaculty;
DatabaseStudent databaseStudent;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    databaseFaculty=new DatabaseFaculty(getApplicationContext());
    databaseFaculty.Open();
    databaseFaculty.close();

    databaseStudent=new DatabaseStudent(getApplicationContext());
    databaseStudent.Open();
    databaseStudent.close();

}
}

Конечно, это будет полезно и успешно сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...