1

同じ「名前と番号」(両方とも文字列として保存されている)のエントリがまだない場合は、基本的にSQLiteデータベースに新しいエントリを作成する保存ボタンがあります。同じ名前と番号のエントリがすでに存在する場合は、上書きするかどうかを尋ねるポップアップが表示されます。

実際に発生するのは、エントリがすでに存在するかどうかに関係なく、新しいエントリを作成することです。[保存]をクリックすると実行されるコード:

final String thename=TeamName.getText().toString()
final String thenum=TeamNum.getText().toString();
if ((thename.length()!=0) && (thenum.length()!=0)){
    ScoutingFormData info1 = new ScoutingFormData(this);
    info1.open();
    final long returnedId=info1.scanFor(thename,thenum);
    if (returnedId==-1){
        info1.createEntry(thename,thenum);
    }
    else
    {
        final Dialog overw=new Dialog(this);
        ....//The code that goes here is unimportant to my question so I'm hiding it.
        overw.show();
    }
    info1.close();  
}

ScoutingFormData.javaのコード:

public long scanFor(String thename, String thenum) {
    String[] columns=new String[]{KEY_ROWID,KEY_NAME,KEY_NUM};
    Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
    int iID = c.getColumnIndex(KEY_ROWID);
    int iName = c.getColumnIndex(KEY_NAME);
    int iNum = c.getColumnIndex(KEY_NUM);
    for (c.moveToFirst(); !c.isAfterLast();c.moveToNext()){
        if ((c.getString(iName)==thename) && (c.getString(iNum)==thenum)){
            return Long.parseLong(c.getString(iID));
        }
    }
    return -1;
}

同じ名前+番号のエントリがすでに存在する場合に、-1が返される可能性があるかどうかはわかりません。

4

1 に答える 1

4

equals値を比較するために使用しStringます。

于 2012-11-12T09:18:49.433 に答える