Здравствуйте, я пытаюсь редактировать элементы в списке и базе данных.
Я попытался изменить имя и имя с идентификатором в методе обновления в моей базе данных, но это не работает.
Это мой EditUser класс
public class EditUser extends AppCompatActivity {
private Button bouton_modifier, bouton_supprimer;
private EditText nom, prenom;
DatabaseHelper mDatabaseHelper;
private String selectedName,selectedFName,selectedID;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.edit_user);
bouton_modifier = (Button) findViewById(R.id.bouton_modifier);
bouton_supprimer = (Button) findViewById(R.id.bouton_Supprimer);
nom = (EditText) findViewById(R.id.nom);
prenom = (EditText) findViewById(R.id.prenom);
mDatabaseHelper = new DatabaseHelper(this);
Intent receivedIntent = getIntent();
selectedID = receivedIntent.getStringExtra("ID");
selectedName = receivedIntent.getStringExtra("name");
selectedFName = receivedIntent.getStringExtra("fname");
nom.setText(selectedName);
prenom.setText(selectedFName);
bouton_modifier.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String name = nom.getText().toString();
String Fname = prenom.getText().toString();
if (!name.equals("") && !Fname.equals("")){
mDatabaseHelper.Update(name, Fname, selectedID, selectedName, selectedFName);
Intent intent = new Intent(EditUser.this, PageUser.class);
startActivity(intent);
}else{
toastMessage("You must enter a name");
}
}
});
а это мой DatabaseHelper класс
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "users.db";
public static final String TABLE_NAME = "users_data";
public static final String COL1 = "ID";
public static final String COL2 = "NAME";
public static final String COL3 = "FNAME";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String createTable = "CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, " +
"NAME TEXT, FNAME TEXT)";
db.execSQL(createTable);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP IF TABLE EXISTS " + TABLE_NAME);
onCreate(db);
}
public boolean addData(String Name, String FName) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL2, Name);
contentValues.put(COL3, FName);
long result = db.insert(TABLE_NAME, null, contentValues);
if (result == -1) {
return false;
} else {
return true;
}
}
public Cursor getListContents() {
SQLiteDatabase db = this.getWritableDatabase();
Cursor data = db.rawQuery("SELECT * FROM " + TABLE_NAME, null);
return data;
}
public void Update(String newName, String newFName,String id, String oldName, String oldFName){
SQLiteDatabase db = this.getWritableDatabase();
String query = "UPDATE " + TABLE_NAME + " SET " + COL2 + COL3 +
" = '" + newName + newFName +"' WHERE " + COL1 + " = '" + id + "'" +
" AND " + COL2 + COL3 + " = '" + oldName + oldFName + "'";
db.execSQL(query);
}
Я хотел бы изменить имя и имя, когда я нажимаю кнопку «модификатор» и возвращаюсь на страницу списка пользователей.




Я точно не знаю, что происходит, но ваш запрос на обновление кажется неверным, вам нужно сделать что-то вроде этого:
UPDATE table
SET column_1 = new_value_1,
column_2 = new_value_2
WHERE
search_condition
Кроме того, это не проблема, но после редактирования я думаю, что вы можете просто вызвать finish() вместо создания нового намерения, если только вы не удаляете PageUser из стека.
Вместо команды execSQL() попробуйте использовать команду update().
Метод update() принимает следующие аргументы
update(String table, ContentValues values, String whereClause, String[] whereArgs)
Так что измените свой метод Update в DatabaseHelper следующим образом:
public void Update(String newName, String newFName,String id, String oldName, String oldFName){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(COL2,newName);
cv.put(COL3,newFName);
String whereClause = COL1 + "=? AND " + COL2 + "=? AND " + COL3 + "=?";
String[] args = new String[]{id, oldName,oldFName};
db.update(TABLE_NAME,cv,whereClause,args);
}
Отлично, рад, что помогло.