以前にデータベースが存在しない場合に、データベースを作成し、そこにデータを入力するアクティビティがあります。または、以前に入力した値を更新したい。
「if-else」を実装してこれを実行しようとしています。
2 つの可能性から選択するためのコードを次に示します。
public void submitusername(View view) {
userdatabase name = new userdatabase(this);
name.open();
String user = name.getusername();
name.close();
EditText cinone = (EditText) findViewById(R.id.username);
username = cinone.getText().toString();
if(user == null){
userdatabase entry = new userdatabase(Editprofile.this);
entry.open();
entry.createEntry(username, null, null, null);
entry.close();
Context context = getApplicationContext();
CharSequence text = "Added new user!";
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
} else {
userdatabase update = new userdatabase(Editprofile.this);
update.open();
update.updateUsername(username);
update.close();
Context context = getApplicationContext();
CharSequence text = "Username updated!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
データベースから「ユーザー名」を呼び出すメソッドは次のとおりです。
public String getusername() {
String[] columns = new String[]{USER_NAME};
Cursor c = userDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
String result = "";
int iName = c.getColumnIndex(USER_NAME);
for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
result = result + c.getString(iName);
}
return result;
}
ユーザー名を更新する方法:
public void updateUsername(String name) {
ContentValues cvUpdate = new ContentValues();
cvUpdate.put(USER_NAME, name);
userDatabase.update(DATABASE_TABLE, cvUpdate, KEY_ROWID + "=" + 0 , null);
}
私が遭遇する問題は 、プログラムを実行してデータベースが存在しない (ユーザー名がない) 場合、ボタンをクリックしても「ユーザー名が更新されました」というトーストが表示され、データが挿入されないことです。明らかにデータベースを作成する必要がある場合は、初めてユーザー名を挿入し、「Added new user!」というトーストを表示します。
また、「if-else」条件を削除すると、既存のデータをチェックせず、「createEntry」部分を保持するだけですべて正常に動作します。データが正しく挿入されます。つまり、私の「createEntry」部分が正しいということです。
何が問題なのですか?他のアクティビティに getusername() を実装しましたが、正常に動作します。