SQLite数据库没有更新

时间:2012-12-20 19:03:34

标签: java android sqlite

我有一项活动,我想创建一个数据库并在之前没有数据库的情况下输入数据。否则,我想更新之前输入的值。

我试图通过实现'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();
    }
}

以下是从数据库调用'username'的方法:

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);
}

我遇到的问题是 当我运行程序并且数据库不存在(没有用户名)时,单击按钮我仍然得到“用户名更新”的吐司并且没有插入数据。当它显然应该创建数据库时,首次插入用户名并显示吐司“添加新用户!”

另外,如果我删除'if-else'条件,不检查现有数据,只保留“createEntry”部分一切正常;数据被正确插入。所以,这意味着我的“createEntry”部分是正确的。

可能是什么问题?我在其他活动中实现了getusername(),它运行正常。

1 个答案:

答案 0 :(得分:1)

尝试将代码更改为:

   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;
}