Как отобразить и изменить сведения о пользователе с помощью sqlite в android
Я закодировал метод отображения и метод изменения, но он не отображается и не изменяется в зависимости от имени пользователя, выбранного из spinner
Что я уже пробовал:
public List<SuperUserDetails> DisplayUserDetails(String accountName) { List<SuperUserDetails> userDetailList = new ArrayList<>(); sqLiteDatabase = this.getReadableDatabase(); String query = "SELECT "+USER_NAME+", "+USER_ADDRESS+", "+USER_DOB+", "+USER_PHONE+", "+USER_EMAIL+ ", "+USER_PASS+ ", "+USER_PASS+ " FROM "+USER_TABLE_NAME+" WHERE "+USER_UNAME+" = '"+accountName+"'"; Cursor cursor = sqLiteDatabase.rawQuery(query, null); if (cursor.moveToFirst()) { do { SuperUserDetails userDetails = new SuperUserDetails(); userDetails.setName(cursor.getString(0)); userDetails.setAddress(cursor.getString(1)); userDetails.setDob(cursor.getString(2)); userDetails.setPhone(cursor.getString(3)); userDetails.setEmail(cursor.getString(4)); userDetails.setPass(cursor.getString(5)); userDetails.setPass(cursor.getString(6)); userDetailList.add(userDetails); }while (cursor.moveToNext()); } cursor.close(); sqLiteDatabase.close(); return userDetailList; } public boolean modifyUserDetails(SuperUserDetails modify) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); String query = "select * from " +USER_TABLE_NAME; Cursor cursor = db.rawQuery(query, null); int count = cursor.getCount(); // values.put(USER_ID, count); values.put(USER_NAME, modify.getName()); values.put(USER_ADDRESS, modify.getAddress()); values.put(USER_DOB, modify.getDob()); values.put(USER_PHONE, modify.getPhone()); values.put(USER_EMAIL, modify.getEmail()); // values.put(USER_UNAME, modify.getUname()); values.put(USER_PASS,modify.getPass()); //values.put(USER_TYPE, modify.getUtype()); /* Cursor cursor1 = db.query(USER_TABLE_NAME, new String[] {USER_NAME,USER_ADDRESS,USER_DOB,USER_PHONE,USER_EMAIL,USER_PASS,USER_PASS},null,null,null,null,null,null,null); if(cursor1 != null) { cursor.moveToLast(); } return cursor1; }*/ /*db.query(USER_TABLE_NAME, null, "USER_UNAME = ?", new String[]{ " USER_UNAME"}, null,null,null,null,null,null,null);*/ long modifyresult = db.update(USER_TABLE_NAME, values, USER_UNAME + " =?", new String[]{String.valueOf(modify.getUname())}); if (modifyresult == -1) { return true; } else { return false; } }
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов / OWASP[^]