为多个Android设备使用相同的sqlite数据库

时间:2018-05-11 10:58:43

标签: android database sqlite

我创建了一个小型演示应用程序,我一直在尝试实现SQLite数据库。一切正常,但对移动开发不熟悉我不确定数据库是如何工作的。

    public class DBOpenHelper extends SQLiteOpenHelper{

    //Constants for db name and version
    private static final String DATABASE_NAME = "notes.db";
    private static final int DATABASE_VERSION = 1;

    //Constants for identifying table and columns
    public static final String TABLE_NOTES = "notes";
    public static final String NOTE_ID = "_id";
    public static final String NOTE_TEXT = "noteText";
    public static final String NOTE_CREATED = "noteCreated";

    public static final String[] ALL_COLUMNS =
            {NOTE_ID, NOTE_TEXT, NOTE_CREATED};

    //SQL to create table
    private static final String TABLE_CREATE =
            "CREATE TABLE " + TABLE_NOTES + " (" +
                    NOTE_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                    NOTE_TEXT + " TEXT, " +
                    NOTE_CREATED + " TEXT default CURRENT_TIMESTAMP" +
                    ")";

    public DBOpenHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(TABLE_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NOTES);
        onCreate(db);
    }
}

这个数据库是否会在所有下载应用程序的手机上都是同一个数据库,这意味着如果手机上的人1向数据库写了一些东西,那么另一部手机的人2会立即看到更新?

或者反过来说:第1人有一个数据库而第2人有自己的另一个数据库吗?

我有兴趣为我的应用程序创建一个数据库,该数据库作为所有手机的一个数据库,因此第1人和第2人将使用完全相同的数据库。

3 个答案:

答案 0 :(得分:3)

SQLite是一个本地数据库,所以每个人都有自己独特的数据,没有任何东西可以共享

如果您正在寻找在多个设备之间同步的内容,您应该考虑让后端服务器从一台设备接收更新并将此更新发送到其他设备

您也可以使用Firebase real-time database

答案 1 :(得分:2)

  

此数据库是否适用于所有下载该应用的手机上的数据库,

答案是 NO 因为SQLite数据库本地存储在设备中

  

这意味着如果手机上的人1向数据库写入内容,则使用另一部手机的人2会立即看到更新?

SQLite

不可能
  

我有兴趣为我的应用创建一个数据库,作为所有手机的一个数据库,因此第1人和第2人将使用完全相同的数据库。

您可以使用Firebase Realtime Database

  • 使用我们的NoSQL云数据库存储和同步数据。数据在所有客户端实时同步,并在您的应用离线时保持可用。
  • Firebase实时数据库是一个云托管数据库。数据以JSON格式存储,并实时同步到每个连接的客户端。当您使用我们的iOS,Android和JavaScript SDK构建跨平台应用程序时,所有客户端共享一个实时数据库实例并使用最新数据自动接收更新

答案 2 :(得分:0)

这些数据库是在设备本地创建的,它与外界没有任何联系,每个运行app的设备都创建了自己的本地数据库,你应该使用Firebase Real-time Database创建一个同步的数据库只要有人改变,它就会反映在所有其他设备上。

Heare is a good example to start with。在开始之前请参阅附带的视频。