1

私の質問は、カーソルを見ることで、フィールドがテーブルの主キーであることを知ることができるということです。または、どのフィールドが主キーであるかをどのように知ることができますか?

そのようなクラスを書きたいです。だから私はプログラム的にそれを学ばなければなりません

public class BO {

private HashMap<String, Object> data;
private String primaryKey="";


public BO() {
    data=new HashMap<String, Object>();
}

public String getUpdateQuery() {
    return null;
}

public String getInsertQusery() {
    return null;
}

public String getPrimaryKey() {
    return primaryKey;
}

public void setPrimaryKey(String primaryKey) {
    this.primaryKey = primaryKey;
}

public int getLogicalReference() {
    return logicalReference;
}

public void loadDataFromCursor(Cursor cur){
    String[] fields=cur.getColumnNames();
    for(int i=0;i<fields.length;i++){
        switch (cur.getType(i)) {
        case Cursor.FIELD_TYPE_INTEGER:
            data.put(fields[i], cur.getInt(i));
            break;

        default:
            break;
        }
    }
}

public void setLogicalReference(int logicalReference) {
    this.logicalReference = logicalReference;
}

}

4

2 に答える 2

0

CLのように。彼のコメントで、カーソルはこの情報を保持していないと私は信じています。列が主キーを保持するかどうかは、テーブルの内容とは異なるテーブル構造に関連しています。Cursor はデータにアクセスするために使用され、テーブルの構造に関する情報は提供しません。

また、Android の Cursor インターフェースは必ずしも SQLiteDatabase に関連しているとは限らないため、この種の情報をそこから取得することはできません。

ただし、これが本当に役立つ適切な使用例は思いつきません。おそらく、コードのある種のとてつもない汎用性です。いずれにせよ、設計を再考する必要がある可能性は十分にあります (または、それが本当に正しいと思う場合は説明してください。その場合、私は興味があります!)

于 2013-05-23T08:49:25.597 に答える