2016-10-05 1 views
0

AWS S3 서버에서 데이터베이스에 액세스 할 Android 앱을 개발하려고합니다. 연결 문자열 즉, aws S3 서버 버킷에서 가져온 db 링크를 추가하여 일반적인 방법으로 시도했습니다. 나는 그 양동이에게도 허락을했다. 하지만 앱을 실행할 때 "데이터베이스를 열 수 있습니다"라고 말합니다. 제가 쉽게 할 수있는 방법이 있습니까? 아래의 DB 어댑터 코드 연결 코드를 확인할 수 있습니다.AWS S3 서버에 저장된 sqlite DB를 내 안드로이드 앱에 원격으로 연결하는 방법

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 어댑터/dbhelper 클래스를 사용하여 aws 링크를 사용하여 원격 aws 서버에 액세스했습니다. 그게 올바른 접근인지 나는 모른다. 나는 안드로이드 개발과 aws도 처음이다.

답변

1

Sqlite는 많은 리소스를 사용하지 않는 포함 된 데이터베이스입니다. 아이디어는 앱 내부에 임베드하는 것입니다. 안드로이드는 내부에 sqlite가 내장되어있어 연결을위한 앱을 작성하여 데이터를 저장할 수 있습니다. 데이터베이스는 장치에 있으며 서버에 살 수 없습니다.

그러나 S3의 sqlite 데이터베이스가 자주 변경되지 않으면 장치에 파일을 주기적으로 다운로드하고 update the local copy of the database을 다운로드 할 수 있습니다.

당신은 아마 database service such as DynamoDB를 사용하는 것이 더있을 수 있습니다 항상 동기화 할 데이터베이스가 필요한 경우,하지만 당신은 여전히 ​​사용자가 인터넷 접속이되지 않는 시간에 대한 지역 sqlite가 테이블에 결과를 캐시 할 수 있습니다 .

관련 문제