mrbonny7 Ответов: 1

Как удаленно подключить базу данных sqlite, хранящуюся на сервере AWS S3, к моему приложению android


Привет,
Я пытаюсь разработать приложение для 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());
        }

    }
}


Спасибо за помощь.

Что я уже пробовал:

Пожалуйста, проверьте код,который я пробовал. Я использовал свой локальный класс db adapter/dbhelper для доступа к удаленному серверу aws по ссылке aws. Я не знаю, правильный ли это подход. Я новичок в разработке android и aws тоже.

1 Ответов

Рейтинг:
5

David_Wimbley

Я не думаю, что вы можете использовать метод SQLiteDatabase.openDatabase для удаленного вызова sql lite. Похоже, что sql lite должен быть на устройстве или sd-карте.

Может Ошибки Андроид.openDatabase() используется для открытия базы данных, удаленные базы данных SQLite? - переполнение стека[^]

Теперь, если вы пытаетесь централизовать свою базу данных так, чтобы несколько аппаратных устройств вызывали одну и ту же базу данных, вам следует рассмотреть возможность предоставления доступа к вашей базе данных через веб-службу, а затем заставить множество различных платформ устройств выполнять вызовы этой веб-службы, а не пытаться разместить ее на s3. Кстати, если вы делаете это так, как кажется, вы сделали свою базу данных s3 sql lite общедоступной, не требуя предварительного url-адреса.