同じ「名前と番号」(両方とも文字列として保存されている)のエントリがまだない場合は、基本的に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が返される可能性があるかどうかはわかりません。