2011-12-09 8 views
0

私は自分のアプリケーションの中に、次のものと前のものの2つのボタンを持っています。次のボタンをデータベースの次のレコードを取得してビューの内側に表示し、前のボタンを使用して以前のレコードを取得し、それを自分のビューの中に表示します。次のまたは前のレコードをどのように呼びますか?私はチュートリアルやものを探しましたが、何も見つかりませんでした。私は誰もチュートリアルを持って私と共有してください。助けてくれてありがとう。私はいくつかのコードを提供したいと思っていますが、どこから始めたらいいのかわかりません。データベースからビューに次のレコードを取得する

答えて

1

私はdbaseからレコードを引き出すためにintを使用します。私ContactViewクラスから

static long record = 1; 

public void getData() { 

    DBase db = new DBase(this); 
    db.open(); 
    lastRecord = db.lRec(); 
    firstRecord = db.fRec(); 
    rRec = db.getRec(record); 
    db.close(); 

} 

その後、私のクエリは、私のdBASEクラスから

public String[] getRec(long record) { 

    record = ContactView.record; 

    String[] columns = new String[] { KEY_ROWID, KEY_ONE, KEY_TWO, 
      KEY_THREE, KEY_FOUR, KEY_FIVE, KEY_SIX }; 
    Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_ROWID + "=" 
      + record, null, null, null, null); 
    if (c != null && c.moveToFirst()) { 
     String rRec = c.getString(0); 
     String rOne = c.getString(1); 
     String rTwo = c.getString(2); 
     String rThree = c.getString(3); 
     String rFour = c.getString(4); 
     String rFive = c.getString(5); 
     String rSix = c.getString(6); 

     String[] rData = { rRec, rOne, rTwo, rThree, rFour, 
       rFive, rSix }; 

     return rData; 

    } 
    return null; 
} 

で、次のいくつかは、私のContactViewクラスから

私のボタン

@Override 
public void onClick(View arg0) { 

    switch (arg0.getId()) { 
    case R.id.bSQLvPrev: 

     recordMinus(); 
     display(); 

     break; 
    case R.id.bSQLvNext: 

     recordPlus(); 
     display(); 

     break; 

    } 
} 
です

と「記録」の変数に基づいて、データベースからレコードを取得し、ボタンはそれをインクリメントするか、デクリメントされます彼らは

public void display() { 

    etSQLvRec.setText(rRec[0]); 
    etSQLvOne.setText(rRec[1]); 
    etSQLvTwo.setText(rRec[2]); 
    etSQLvThree.setText(rRec[3]); 
    etSQLvFour.setText(rRec[4]); 
    etSQLvFive.setText(rRec[5]); 
    etSQLvSix.setText(rRec[6]); 
} 

public void recordPlus() { 
     record++; 

    } 

public void recordMinus() { 
     record--; 
    } 

呼び出す方法、それはまた、任意の「空」のレコードをスキップします。

EDIT OK]を、私は私が私のDBを使用続いたので、周りにいくつかのものを変更し、その次のrecordPlus()とrecordMinus()の代わりにコード

public void recordPlus() { 
    if (record < lastRecord) { 
     record++; 
    } else { 
     record = firstRecord; 
    } 
    getData(); 

    do { 
     if (record < lastRecord) { 
      record++; 
     } else { 
      record = firstRecord; 
     } 
     getData(); 
    } while (rRec == null); 
} 

public void recordMinus() { 
    if (record == 1) { 
     record = lastRecord; 
    } else { 
     record--; 
    } 
    getData(); 

    do { 
     if (record == 1) { 
      record = lastRecord; 
     } else { 
      record--; 
     } 
     getData(); 
    } while (rRec == null); 
} 

を使用して、あなたは私のFRECを(必要があります)としていましたDBの最初と最後のレコードを検索するlRec()

public long fRec() { 

    Cursor c = ourDatabase.query(DATABASE_TABLE, new String[] { "min(" + 
    KEY_ROWID 
      + ")" }, null, null, null, null, null); 
    c.moveToFirst(); 
    long rowID = c.getInt(0); 

    return rowID; 
} 

} 

public long lRec() { 

    long lastRec = 0; 
    String query = "SELECT ROWID from Table order by ROWID DESC limit 1"; 
    Cursor c = ourDatabase.rawQuery(query, null); 
    if (c != null && c.moveToFirst()) { 
     lastRec = c.getLong(0); 
    } 
    return lastRec; 
} 
関連する問題