2017-11-28 2 views
0

私はそれが馬鹿だと知っています。私は愚かなので病気はそれを簡単に保つ。出力のないバックエンドデータベースが必要な場合はSQLiteを使用しますか?

私はプロジェクトのアンドロイドアプリを開発しています。私は緯度と経度の40のレコードを含むバックエンドデータベースが必要です。私はアプリケーションにデータ入力フォームが必要です。私がしたいのは、データを保存しておき、必要なときにそれにアクセスすることだけです。

私はGoogleマップから座標を格納し、私は地図上にマーカーを置くために私のデータベースで経度と緯度の座標を使用したいと思います。

チュートリアルSQLiteDatabasesのすべてのチュートリアルでは、CRUDを使用したデータ入力フォームがあります。私はこれらの機能を必要とせず、それは私が間違った場所で始まっていると思うようになります。 SQLiteは私が探しているべきものですか?

データはサーバーではなくローカルマシンに保存されます。

私はこれがクリアされることは非常に基本的なことだと思います。

+0

サーバーサイドデータベースが必要な場合は、基本的に任意のデータベース(SQL Server、SQLite、MySQLなど)を自由に選択できます。あなたがSQLiteを使うことを考えている理由は何ですか? –

+0

@TimBiegeleisen私はAndroidスタジオでアプリを開発していますが、私はいくつか見て回って、Android Studioフォーラムの投稿にSQLiteのものがたくさんあるようでした。もっと良い選択肢があれば、私は耳を開いてください。返信ありがとう:) – jomot

+0

あなたのアプリが任意のエンドポイント、おそらく良い仮定を打つことができれば、あなたが望む任意のWebサービスを作成できます。 AndroidのコンテキストでのSQLiteは、通常、電話機自体に組み込まれたデータベースを意味します。 –

答えて

1

これは自分のための単一のアプリプロジェクトであり、多くのデータがない場合は、単にSharedPreferencesシステムを使用して物事を保存することができます。あなたが大規模なセットを格納する格納する必要がある場合、それはAPIを付属していますので、

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    settings = getSharedPreferences(getPackageName(), MODE_PRIVATE); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putString("lat0",38.162206); 
    editor.putString("lat1",19.178379); 
    editor.putString("lat2",-14.400629); 
    editor.putString("long0",-102.128906); 
    editor.putString("long1",9.316406); 
    editor.putString("long2",-61.699219); 
    editor.apply(); 
    // ... 
    //maybe read back with 
    double long1 = Double.valueof(settings.getString("long0",null)); 

は、その後のsqliteを使用すると、行くための最も簡単な方法です。後で呼び出すために、データを手動でコーディングして保存することができます。 、あなたは資産フォルダを作成する必要があり、これは、分散アプリケーションの場合

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ArrayList<Double> markerLatitude = new ArrayList<>(); 
    ArrayList<Double> markerLongitude = new ArrayList<>(); 
    File databaseFile = getDatabasePath("coordinates.db"); 
    //create table for 1st time if not existing 
    SQLiteDatabase db = openOrCreateDatabase(databaseFile.toString(), Context.MODE_PRIVATE, null); 
    db.execSQL("CREATE TABLE IF NOT EXISTS \"coordinates\" (latitude real, longitude real)"); 
    Cursor result = db.rawQuery("SELECT count(*) FROM \"coordinates\"", null); 
    //if nothing there... 
    if (!(result.moveToFirst() && result.getInt(0) == 0)) { 
     //populate table 
     db.execSQL("INSERT INTO coordinates (latitude, longitude) VALUES(38.162206,-102.128906)"); 
     db.execSQL("INSERT INTO coordinates (latitude, longitude) VALUES(19.178379,9.316406)"); 
     db.execSQL("INSERT INTO coordinates (latitude, longitude) VALUES(-14.400629,-61.699219)"); 
     // ... 
    } 
    // read values 
    else { 
     result = db.rawQuery("SELECT latitude, longitude FROM \"coordinates\"", null); 
     result.moveToFirst(); 
     do { 
     //populate some lists or do whatever with the retrieval 
     markerLatitude.add(result.getDouble(result.getColumnIndex("latitude"))); 
     markerLongitude.add(result.getDouble(result.getColumnIndex("longitude"))); 
     } 
     while (result.moveToNext()); 
    } 
    cursor.close(); 

を、またはあなたが頻繁にあなたのデータを編集する必要がある(アンドロイドメーカー:このような何かがうまくいくかもしれないAPP-> src->メイン右クリックnew-> folder-> assets)、そこにデータファイルを置いて(json、sqlite、ect)、後で読み返してください。 DB browser for sqliteなどのデスクトッププログラムを使用して、sqliteデータベースを編集することができます。 Where do I place the assets folderを参照してください。 Saving Data Using SQLiteを参照してください。 Room Persistence Libraryもあります。

+0

2番目のオプションは何を探しています。あなた自身のsqliteデータベースを使用するために提供したソースは2009年です。私はすでにそれを見てきましたが、うまくいきません。確かに、データベースファイルをすでに作成しておき、コード内のそのデータベースの部分を参照するだけでは、この複雑な作業は必要ありません。 – jomot

+0

私の答えがオプション2に更新されました – SHartley

+1

座標が40だけ変わらない場合は、double lat [] = {38.162206,19.178379、-14.400629}といういくつかの二重配列でベイク処理します。 – SHartley

0

私のアプリ用の読み込み専用表データを保存する必要があるとき、私は同様の問題に遭遇しました。 JavaからのSQLiteの使用は、高速でも小さなものでもありませんでした。

私は、文字列の配列を選択し、それらをはるかに連れて行ってくれました: -

final static String[][] values = { 
      {"00%", "00%", "00%", "00%"}, 
      {"00%", "30%", "40%", "50%"}, 
      {"00%", "30%", "40%", "50%"}, 
      {"00%", "45%", "55%", "65%"}, 
} 

を私はいくつかのデータの照会やフィルタリングをやってみたかったまで。 SQLとSQLiteはそのための優れたツールですが、Javaの例は私を驚かせてくれました。また、Java 8ストリームが複雑であることがわかりましたが、それらはあなたのために働くかもしれません。

は、その後、私はKotlinに一つのファイルを移行: -

val values = listOf(listOf("00%", "00%", "00%", "00%"), 
        listOf("00%", "30%", "40%", "50%"), 
        listOf("00%", "30%", "40%", "50%"), 
        listOf("00%", "45%", "55%", "65%")) 

そして、それはこれまでのところうまく働いている: - 他の回答として

values.filter({it -> it[1] == "30%"}) // get rows where 2nd col == 30% 

もっとhere

0

が示唆1が存在しません溶液。あなたのニーズに大きく依存します。 データが変更(座標)されていない場合は、resディレクトリのstringsファイルに保存することも、データを保持するjava配列を持つこともできます。 データを変更する必要がある場合は、sqliteまたは他のdb、sharedPreferencesを使用するか、ファイルに保存することができます。データベースを扱う作業は、最初は難しい作業でしたが、他のフォームよりもはるかに簡単に管理できます。

関連する問題