2015-11-22 3 views
0

Я работал над удалением определенной строки из моей базы данных SQLite, передав имя пользователя в качестве аргумента.
Теперь это то, что происходит.Удаление строки из базы данных SQLite путем передачи имени пользователя?

Если я передаю идентификатор строки, все работает нормально, но когда я перехожу в KEY_Name = имя пользователя, ничего не происходит.

Итак, я действительно смущен сейчас.
Может кто подскажет мне, почему эта ошибка появляется?
Такая же проблема возникает с моей кнопкой обновления.

public void deleteUser(String userName) 
     { 
      try 
      { 
       SQLiteDatabase db = helper.getWritableDatabase(); 
       db.delete(DATABASE_TABLE, KEY_NAME + "=" + userName,null); 
      } 
      catch(Exception e) 
      { 
       e.printStackTrace(); 
      } 

     } 

case R.id.button4: 

       String sr = t7.getText().toString(); 

       Electronicscheckout exht = new Electronicscheckout(this); 
       try { 
        exht.open(); 
        exht.delete(sr); 
        exht.close(); 
       } catch (SQLException e) { 
        Dialog d = new Dialog(this); 
        d.setTitle("Dang"); 
        TextView tv = new TextView(this); 
        tv.setText("error"); 
        d.setContentView(tv); 
        d.show(); 
       } 
       break; 

Дело в том, что на самом деле меня удивляет, что следующий код работает, если я прохожу в строке идентификатора в качестве аргумента в следующем: -

public void deleteUser(Long id) 
     { 
      try 
      { 
       SQLiteDatabase db = helper.getWritableDatabase(); 
       db.delete(DATABASE_TABLE, KEY_ROWID + "=" + id,null); 
      } 
      catch(Exception e) 
      { 
       e.printStackTrace(); 
      } 

     } 
+0

@ FrankN.Stein: - Я не понимаю вас. Не могли бы вы немного объяснить? – Raj

+1

См. Мой ответ ... –

ответ

2

username является строка. Таким образом, вы должны окружить его string delimiter (').

Итак:

db.delete(DATABASE_TABLE, KEY_NAME + "= '" + userName + "'",null); 

Или (лучше) использовать связанный параметр.

Итак:

db.delete(DATABASE_TABLE, KEY_NAME + "= ?", new String[]{userName}); 

В этом случае сама Android обрабатывает строки правильно, так что вам не придется добавлять разделители строк.

+1

N Stein: - Большое спасибо за вашу помощь. Это сработало – Raj

Смежные вопросы