gpt4 book ai didi

java - SQLite 数据库未更新

转载 作者:行者123 更新时间:2023-12-01 14:58:54 25 4
gpt4 key购买 nike

我有一个 Activity ,我想在其中创建一个数据库,如果以前不存在数据库,则将数据输入其中。否则,我想更新之前输入的值。

我正在尝试通过实现“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”部分是正确的。

可能是什么问题?我已经在其他 Activity 中实现了 getusername() 并且工作正常。

最佳答案

将代码更改为以下内容后尝试:

   userdatabase name = new userdatabase(Editprofile.this);
name.open();
String user = name.getusername();
name.close();

EditText cinone = (EditText) findViewById(R.id.username);
username = cinone.getText().toString();

if(user.equals("")){

//your code here
}

else {
//your code here
}

并将您的 getusername() 方法更改为:

public String getusername() {                                                               
String[] columns = new String[]{USER_NAME};
Cursor c = userDatabase.query(DATABASE_TABLE,
columns,
null,
null,
null,
null,
null);

String result = "";
c.moveToFirst();
if(c.getCount()>0){

int iName = c.getColumnIndex(USER_NAME);

for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {

result = result + c.getString(iName);
}
}
return result;
}

关于java - SQLite 数据库未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13978773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com