2016-10-05 5 views
0

AWS S3サーバーからデータベースにアクセスするAndroidアプリケーションを開発しようとしています。 接続文字列、つまりaws S3 server bucketから取得したdbリンクを追加するだけで、通常の方法でやり直してみました。私はそのバケツにも許可を与えました。しかし、私はアプリを実行すると、 "データベースを開くことができる"と言います。私はそれを簡単にやり遂げる方法はありますか? 下記のDBアダプタコードの接続コードを確認できます。AWS S3サーバーに保存されているsqlite DBをAndroidのアプリケーションにリモートで接続するには

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は、多くのリソースを消費しない埋め込みデータベースです。アイデアはあなたのアプリの中に埋め込むことです。 Androidにはsqliteが埋め込まれているため、接続するアプリケーションを作成してデータを格納することができます。データベースはデバイス上に存在し、サーバー上には存在できません。

しかし、S3のsqliteデータベースが頻繁に変更されない場合は、デバイスにファイルを定期的にダウンロードしてupdate the local copy of the databaseとすることができます。

データベースを常に同期させる必要がある場合は、database service such as DynamoDBを使用する方が良いかもしれませんが、インターネットにアクセスできない時間にはローカルのsqliteテーブルに結果をキャッシュすることができます。

関連する問題