java - 如何将存储在 AWS S3 服务器中的 sqlite 数据库远程连接到我的 Android 应用程序

标签 java android sqlite amazon-s3

我正在尝试开发一个 Android 应用程序,它将从 AWS S3 服务器访问数据库。 我尝试以正常方式执行此操作,只需添加连接字符串,即从 aws S3 服务器存储桶获得的数据库链接。我也已向该桶授予了许可。但是当我运行该应用程序时,它说“可以打开数据库”。有什么方法可以让我轻松做到吗? 您可以在下面查看我的数据库适配器代码连接代码。

public class DataBaseHelperAWS extends SQLiteOpenHelper {

    private SQLiteDatabase myDataBase;
    Date d = new Date();
    private final Context myContext;
    private static String  DB_PATH = "https://s3.ap-North-2.amazonaws.com/xxxx/test.db"; 

 public DataBaseHelperAWS(Context context) {
        super(context,  "https://s3.ap-North-2.amazonaws.com/xxxx/test.db" , null, 1);
this.myContext = context;
    }


public void openDataBase() throws SQLException {
        //Open the database
        try {
            String myPath = DB_PATH ;

            myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
        } catch (SQLiteException e) {
     }
}

    public Cursor GetData(String query) throws SQLException {

        //Open the database
        Cursor resultSet = null;
        try {
            openDataBase();
            resultSet = myDataBase.rawQuery(query, null);
            resultSet.moveToFirst();
        } catch (SQLException e) {
    }
}

public void ExecuteQuery(String query) throws SQLException {

        //Open the database
        try {
            openDataBase();
            myDataBase = this.getWritableDatabase();
            myDataBase.execSQL(query);
        } catch (Exception e) {
}
}

  public synchronized void close() {
        try {
            if (myDataBase != null)
                myDataBase.close();

            super.close();
        } catch (Exception e) {
            Log.d(TAG, e.getMessage());
        }

    }
}

请检查我尝试过的代码。我使用本地数据库适配器/dbhelper 类通过 aws 链接访问远程 aws 服务器。我不知道这是否是正确的方法。我也是 Android 开发和 AWS 的新手。

最佳答案

Sqlite是一个嵌入式数据库,不会消耗大量资源。我们的想法是将其嵌入到您的应用程序中。 Android 中嵌入了 sqlite,因此您可以编写应用程序来连接以在其中存储数据。数据库驻留在设备上,不能驻留在服务器上。

但是,如果 S3 中的 sqlite 数据库不经常更改,您可以定期将文件下载到设备上 update the local copy of the database .

如果您需要数据库始终保持同步,那么使用 database service such as DynamoDB 可能会更好,但您可能仍然希望在用户无法访问互联网时将结果缓存在本地 SQLite 表中。

关于java - 如何将存储在 AWS S3 服务器中的 sqlite 数据库远程连接到我的 Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39874814/

相关文章:

android - 跟踪 iPhone/Android 应用程序的使用情况

c# - 使用 Microsoft.EntityFrameworkCore.Sqlite 从 SQLite 数据库进行逆向工程

iphone - 更新应用程序时数据库更新的最佳策略

c# - Windows Phone 8商店测试套件错误

JavaFX RandomNameChooser 项目 - NullPointerException 错误(可能是一个简单的修复,但我仍然很困惑)

java - Java 中的 Servlet - 跨 JVM 共享 ServletContext

java - 获取经纬度需要很长时间

java - 努力让我的 ListView 正常工作

android - appcompat-v7 :25. 3.0 : AppCompat does not support the current theme features: { windowActionBar: false, 窗口ActionBarOverlay : false, 。 }

android - Flutter 应用程序在没有静态方法 isAtLeastR 的 Android 10 和 R 上崩溃