2

データベースから情報を取得し、それを文字列に入れて画面に出力しようとしています。以下のコードを使用してそれを実行できると思いましたが、カーソル内の情報ではなく、カーソルに関する情報を提供します。

datasource = new DataBaseHelper(this);
datasource.open();
Cursor c = datasource.getAllGoals();
startManagingCursor(c);
String g = c.toString();
goal.setText(g);
datasource.close();
4

2 に答える 2

1

カーソルは、基になるデータへのポインターと考えることができます。c.toString()カーソル オブジェクトで実行Cursorすると、その文字列表現 (アットマーク文字とオブジェクトのハッシュ コードの符号なし 16 進数表現) の既定のクラスの実装が出力され@ますが、これは必要なものではありません。

基になるデータベース データを取得するには、c.getString(columnIndex)( source ) を呼び出すか、その特定の列インデックスに必要な列データ型を呼び出す必要があります。

source から変更された例を次に示します。

テーブルを作成したとします

private static final String DATABASE_CREATE = 
            "create table comments ( "
            + "_id integer primary key autoincrement, "
            + "comment text not null);";

関数は、と の両方に関するデータをgetAllGoals指すカーソルを返します。ここで、列に関する詳細のみを表示する必要があります。したがって、実行する必要があります。関数が、列に関するデータのみを指すカーソルを返すとします。実行する必要があります。 _idcommentcommentc.getString(1)getAllGoalscommentc.getString(0)

提供されている例のソース コードをダウンロードして、カーソルからデータを取得する方法を確認することをお勧めします。

編集:

    public List<Comment> getAllComments() {
        List<Comment> comments = new ArrayList<Comment>();

        Cursor cursor = database.query(MySQLiteHelper.TABLE_COMMENTS,
                allColumns, null, null, null, null, null);

        cursor.moveToFirst();
        while (!cursor.isAfterLast()) {//retrieve data from multiple rows
            Comment comment = cursorToComment(cursor);
            comments.add(comment);
            cursor.moveToNext();
        }
        // Make sure to close the cursor
        cursor.close();
        return comments;
    }

    private Comment cursorToComment(Cursor cursor) {
        Comment comment = new Comment();
        comment.setId(cursor.getLong(0));
        comment.setComment(cursor.getString(1));
        return comment;
    }

ソース

于 2012-05-26T16:53:13.540 に答える
0
openDataBase();
Cursor c = myDataBase.rawQuery("SELECT * FROM tb_aa_City where City_Name = '"+cityname+"'", null);
if (c.getCount() > 0) {
    c.moveToFirst();
    seqid = c.getString(4);
    System.out.println("In DB..getSequenceID..."+seqid);
    }
    c.close();
    myDataBase.close();
    SQLiteDatabase.releaseMemory();
于 2012-05-26T17:03:58.810 に答える