0

「カーソル」を使用してSQLiteデータベースのデータを読み取ることについてはあまり知識がありませんが、いくつかの参照と例を使用してこれを設定するためにいくつかコンパイルしました。なぜデータベースから読み取るのかわからないので、データがデータベースに入力されているかどうかを確認します。データベースブラウザとその現在の誰かがこれを機能させる方法を教えてもらえますか?

指定された値の長い値を持つすべてのフィールドを取得する関数があるという点で、db接続とクエリを保持する別のクラスがあります

public Cursor getAppointments(long date) throws SQLException
    {
    Cursor mCursor =
    db.query(true, DATABASE_TABLE, new String[] {
    KEY_ROWID,
    APP_TIME,
    APP_TITLE,
    },
    APP_DATE + "="  + date,
    null,
    null,
    null,
    null,
    null);
    if (mCursor != null) {
    mCursor.moveToFirst();
        }
    return mCursor;
    }

このコードが行うことになっているのは、クエリされた値として対応する日付を持つすべてのレコードを取得して返すことです。

これでメインクラスに、このコードをキャッチしてTextviewに行ごとに表示することができます。

 db.open();
       Display.setText("");
       Cursor c = db.getAppointments(SDate);

      if (c.moveToFirst())
          Display.setText(DisplayTitle(c));
       else
       Toast.makeText(this, "No title found",
       Toast.LENGTH_LONG).show();

       db.close();

タイトルの表示方法は

private String DisplayTitle(Cursor c) {

        String Final ="";

        Final = c.getString(1)  + " " +c.getString(2) + " " +  c.getString(3)  + "\n" ;

        return Final;

    }

日付と同じlong値を持つレコードを取得してテキストビューに表示するために必要な変更を教えてもらえますか?同じlong値を持つ複数のレコードが存在する可能性があるため、日付に同じ長い値を設定し、テキストビューに表示します。

乾杯、迅速な返信を待っています。:)

4

2 に答える 2

2

カーソルを使用するこの単純なアプローチを使用します。

 String q = "SELECT * FROM DATABASE_TABLE where(APP_DATE like '"+date+"')";//your query
 Cursor c = db.rawQuery(q, null); //  db is a object of SQLiteDatabase type  

次に、次のような列インデックスがわからない場合は、 getColumnIndex()メソッドで列名を使用してそれぞれの列の値を取得します。

              if(c.getCount() == 0)
              {                   
                 //No entry found
              }
              else  {
                  c.moveToFirst();
                  do {
                      String mail = c.getString(c.getColumnIndex("KEY_ROWID"))+c.getString(c.getColumnIndex("APP_TIME"))+c.getString(c.getColumnIndex("APP_TITLE")); 
                        // do whatever you like with each record                    
                    } while (c.moveToNext());               
            c.close();
            db.close();

于 2012-05-27T10:14:40.407 に答える
0

DisplayTitleメソッドのインデックス1からカーソルの読み取りを開始しました。0である必要があります。それぞれc.getString(0)とを意味します。

于 2012-05-27T09:11:15.857 に答える