Проблема обновления SQLite - PullRequest
       2

Проблема обновления SQLite

0 голосов
/ 28 октября 2011

У меня проблема с запросом на обновление в sqlite [android]

, вот метод обновления:

public int Updater(String pass, String na, String sur, String cou,String log){
    ContentValues cv=new ContentValues();

    cv.put(colPassword, pass);
    cv.put(colName, na);
    cv.put(colSurn, sur);
    cv.put(colCountry, cou);
    return sqLiteDatabase.update(Usr_TABLE, cv, colLogin+"="+log, new String []{colLogin});   
}

Я получаю сообщение об ошибке:

Error updating Name=qwewqeq Login=tesg Surname=gfgfg Country=ewrwe Password=dfsdfds using UPDATE USERS SET Name=?, Login=?, Surname=?, Country=?, Password=? WHERE Login=bla

и позже

Завершение курсора, который не был деактивирован или закрыт

НО

Я закрыл все

здесь вызывается обновление:

public void FinishCl(View v){
    sql = new SQLiteAdapter(this);
    editps = (EditText) findViewById(R.id.Pasek);
    edytn = (EditText) findViewById(R.id.wyname);
    editsn = (EditText) findViewById(R.id.wysurname);
    editctry = (EditText) findViewById(R.id.wycountry);
    psw = editps.getText().toString();
    nr= edytn.getText().toString();
    srn = editsn.getText().toString();
    ctr= editctry.getText().toString();
    sql.openToWrite();
    sql.Updater(psw, nr, srn, ctr,"iie");
    sql.close();
    startActivity(new Intent(this,UserPanel.class));
}

проверьте, что метод входа также закрывается:

public void OkCl(View v){
    enterLog = enterLogin.getText().toString();
    enterPass = enterPassword.getText().toString();
    sqa=  new SQLiteAdapter(this);
    sqa.openToRead();
    Log.i("login",enterLog);
    Log.i("password",Login.enterPass);
    if(sqa.logineSelector(enterLog, enterPass)==true){
        Log.i("zwrocilo", "true");
        startActivity(new Intent(this,UserPanel.class));
       sqa.close();
    }
    else if (sqa.logineSelector(enterLog, enterPass)==false){
        sqa.close();
        Log.i("zwrocilo", "false");
        AlertDialog.Builder alertbox = new AlertDialog.Builder(this);
        alertbox.setMessage("Wrong password or login");
        alertbox.setNeutralButton("Ok", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface arg0, int arg1) {
            }
        });
        alertbox.show();
    }
}

1 Ответ

1 голос
/ 28 октября 2011

Если colLogin - это имя столбца, а log - это его значение, ваши параметры whereClause и whereArgs кажутся испорченными.

Я считаю, что это должно быть

return sqLiteDatabase.update(Usr_TABLE, cv, colLogin+"=?", new String []{log});

или

return sqLiteDatabase.update(Usr_TABLE, cv, colLogin+"="+log, null);

, поскольку whereArgs заменяет "?"в вашем whereClause.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...