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

У мене проблема з запитом оновлення в sqlite [андроїд]

ось спосіб оновлення:

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.setNeutralБЕЗton("Ok", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface arg0, int arg1) {
            }
        });
        alertbox.show();
    }
}
0

1 Відповіді

Якщо colLogin - це назва стовпця, а журнал - це його значення, параметри whereClause і whereArgs переплуталися.

Я вважаю, що це має бути

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

або

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

since whereArgs are replacement fабо"?" in your whereClause.

1
додано
Тепер я отримую помилку: sqlite повернувся: код помилки = 1, msg = немає такого стовпчика login_name
додано Автор iie, джерело
static final String colLogin = "Вхід" - це робить. Чи мали ви це на увазі?
додано Автор iie, джерело
результат Ті ж, помилка: sqlite повернувся: код помилки = 1, msg = немає такого стовпчика login_name, не могли б ви пояснити мені, чому в sqlite ми не використовуємо чисті SQL-запити? Заборонено?
додано Автор iie, джерело
colLogin має зберігати фактичне ім'я стовпця
додано Автор Vladimir, джерело
тоді дивно. обидві мої пропозиції призводять до цієї помилки?
додано Автор Vladimir, джерело
якщо це ваша база даних - можна скористатися методом rawQuery() developer.android. com/reference/android/database/sqlite/& hellip;
додано Автор Vladimir, джерело
android_jobs_ua
android_jobs_ua
120 учасників

Публикуем вакансии и запросы на поиск работы по направлению Android. Здесь всё: full-time, part-time, remote и разовые подработки.

Mobile Dev Jobs UA
Mobile Dev Jobs UA
20 учасників

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin, RN и т.д.