我有一个活动,如果以前不存在数据库,我想创建一个数据库并在其中输入数据。否则,我想更新之前输入的值。
我试图通过实现'if-else'来做到这一点。
这是在两种可能性之间进行选择的代码:
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);
}
我遇到的问题是, 当我运行程序并且数据库不存在(没有用户名)时,单击按钮时,我仍然得到 toast “用户名已更新”并且没有插入数据。当它明确应该创建数据库时,第一次插入用户名并显示吐司“添加新用户!”
此外,如果我删除了“if-else”条件,则不检查现有数据而只保留“createEntry”部分一切正常;数据被正确插入。所以,这意味着我的“createEntry”部分是正确的。
可能是什么问题呢?我已经在其他活动中实现了 getusername() 并且效果很好。