2017-08-14 4 views
-1

私はSQLiteデータベースに格納するPersonオブジェクトを持っています。Android SQLiteデータベースから一番若い人を取得

人物に年齢、姓名、姓があります。

私は一番若い人(最低年齢)を探しています。

どうすればいいですか?しかし、私は本当に "rawQueryは" 何で混乱してる

public Person getYoungest(Cursor c) { 
     c.moveToFirst(); 
     db.rawQuery("SELECT MIN(" + AGE + ") FROM " + PERSON_TABLE, null); 
     // Person youngestPerson = ??? 
     // return youngestPerson; 
} 

は、これまでのところ、私はこれ持っています。それはpersonオブジェクトを返しません。また、私はクエリが私に最も低い「年齢」を与えるのか、最も低い「年齢」(私が望むもの)を含むレコードかを確かめません。私はSQLに非常に新しいので、これは私にとっては奇妙なことです。

任意のアドバイスはありますか?

+3

あなたのユーザー名は...珍しいです。 –

+0

あなたの質問は非常に基本的なので、最初にSQLチュートリアルを行う必要があります。 –

+0

私はクエリーをJavaオブジェクトに変換する方法についてさらに混乱しています。 –

答えて

0

SQLiteは文字列、数値、バイト配列を返します。

これらはJavaオブジェクトと似ていません。それぞれの値を取得し、コンストラクタを使用してコード内の人を初期化する必要があります。

または、sqliteを使用してJavaオブジェクトを簡単に保存するためのrealmデータベースを使用します。マルチンOrlowskiが言ったよう

SELECT * FROM ... LIMIT 1 

を使用してパフォーマンスを改善することを忘れないでください。このオブジェクトの使用を作成する

if (c.moveToFirst()) { 
     int idColIndex = c.getColumnIndex("id"); 
     int nameColIndex = c.getColumnIndex("name"); 
     int emailColIndex = c.getColumnIndex("email"); 

int id = c.getInt(idColIndex) 
      String name = c.getString(nameColIndex) 
      String email = c.getString(emailColIndex) 

:データを取得するための

はこれを使用

new Person(<your values>); 
+0

これは私の問題に対処する最良の仕事をしたので、これは最高の答えです。 –

2

あなたが現在行っていることは、あなたのデータセットから最も小さい年齢の値を照会することです。あなたは、このような全体のデータ行を取得したい場合は、

昇順で年齢によってデータをソートう
SELECT * FROM ... ORDER BY age ASC LIMIT 1 

のように、ORDER BYを使用する必要があります。 1つだけを使用したい場合は、LIMITを使用して確実にこれを行うようにします(また処理を高速化する)が、ほとんどの場合、同じ年齢(最小値を含む)を持つ可能性が高いので、ORDER BYを細かい調整ソート。

+0

ありがとう!だから、たとえそれを行ったとしても、結果からPersonオブジェクトをどのように取得するのだろうか? –

+0

データベースにオブジェクトがありません。ちょうど価値。したがって、DBの値に基づいてオブジェクトを構築する必要があります。そして、私はあなたが盲目的にやっているように見えるので、最初にsqlite dbチュートリアルを実行することを強くお勧めします。 –

0

db.rawQuery ==> select文から返されたデータにその時点のカーソルを返しますだからあなたはする必要があります

Cursor cursor = db.rawQuery("SELECT * FROM PERSON_TABLE ORDER BY age ASC , null); 
if(cursor.moveToFirst()) //mean find data and point to the samllest 
cursor.getString(c.getColumnIndex("field_name")); 
関連する問題