java - tabla - SQLite en Android Cómo actualizar una fila específica
select sqlite android (16)
- Yo personalmente prefiero .Update por su conveniencia. Pero execsql funcionará igual.
- Estás en lo cierto con tu suposición de que el problema es el contenido de tus valores. Debería crear un objeto ContentValue y colocar allí los valores de su fila de base de datos.
Este código debería corregir tu ejemplo:
ContentValues data=new ContentValues();
data.put("Field1","bob");
data.put("Field2",19);
data.put("Field3","male");
DB.update(Tablename, data, "_id=" + id, null);
He intentado actualizar una fila específica desde hace un tiempo, y parece que hay dos formas de hacerlo. Por lo que he leído y probado, puedes usar:
execSQL(String sql)
o el:
update(String table, ContentValues values, String whereClause, String[] whereArgs)
.
(Avíseme si esto es incorrecto ya que soy nuevo en Android y muy nuevo en SQL).
Así que déjame llegar a mi código real.
myDB.update(TableName, "(Field1, Field2, Field3)" + " VALUES (''Bob'', 19, ''Male'')", "where _id = 1", null);
Estoy tratando de lograr esto:
Actualice Field1, Field2 y Field3 donde la clave principal (_id) es igual a 1.
Eclipse me da una línea roja justo debajo de la palabra "actualizar" y me da esta explicación:
La actualización del método (String, ContentValues, String, String []) en el tipo SQLiteDatabase no es aplicable para los argumentos (String, String, String, null)
Supongo que no estoy asignando los valores de contenido correctamente. ¿Alguien puede señalarme en la dirección correcta?
// Aquí hay un código de muestra simple para la actualización
// Primero declara esto
private DatabaseAppHelper dbhelper;
private SQLiteDatabase db;
// inicializa el siguiente
dbhelper=new DatabaseAppHelper(this);
db=dbhelper.getWritableDatabase();
// código de actualización
ContentValues values= new ContentValues();
values.put(DatabaseAppHelper.KEY_PEDNAME, ped_name);
values.put(DatabaseAppHelper.KEY_PEDPHONE, ped_phone);
values.put(DatabaseAppHelper.KEY_PEDLOCATION, ped_location);
values.put(DatabaseAppHelper.KEY_PEDEMAIL, ped_emailid);
db.update(DatabaseAppHelper.TABLE_NAME, values, DatabaseAppHelper.KEY_ID + "=" + ?, null);
// pongo tu ID en lugar del ''signo de interrogación'' es una función de mi preferencia compartida.
Espero que esto te ayude:
public boolean updatedetails(long rowId, String address)
{
SQLiteDatabase mDb= this.getWritableDatabase();
ContentValues args = new ContentValues();
args.put(KEY_ROWID, rowId);
args.put(KEY_ADDRESS, address);
return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null)>0;
}
Intenta con este método de actualización en SQLite
int id;
ContentValues con = new ContentValues();
con.put(TITLE, title);
con.put(AREA, area);
con.put(DESCR, desc);
con.put(TAG, tag);
myDataBase.update(TABLE, con, KEY_ID + "=" + id,null);
Método para la actualización en SQLite:
public void updateMethod(String name, String updatename){
String query="update students set email = ? where name = ?";
String[] selections={updatename, name};
Cursor cursor=db.rawQuery(query, selections);
}
Manera simple:
String strSQL = "UPDATE myTable SET Column1 = someValue WHERE columnId = "+ someValue;
myDataBase.execSQL(strSQL);
Para las actualizaciones, necesita llamar a setTransactionSuccessfull para que los cambios se confirmen así:
db.beginTransaction();
try {
db.update(...)
db.setTransactionSuccessfull(); // changes get rolled back if this not called
} finally {
db.endTransaction(); // commit or rollback
}
Primero crea un objeto ContentValues :
ContentValues cv = new ContentValues();
cv.put("Field1","Bob");
cv.put("Field2","19");
Luego usa el método de actualización. Tenga en cuenta que el tercer argumento es la cláusula where. Los "?" es un marcador de posición. Será reemplazado con el cuarto argumento (id)
myDB.update(MY_TABLE_NAME, cv, "_id = ?", new String[]{id});
Esta es la solución limpia para actualizar una fila específica.
Primero crea un objeto ContentValues:
ContentValues cv = new ContentValues();
cv.put("Field1","Bob"); //These Fields should be your String values of actual column names
cv.put("Field2","19");
cv.put("Field2","Male");
Luego use el método de actualización, debería funcionar ahora:
myDB.update(TableName, cv, "_id="+id, null);
Puede intentarlo así:
ContentValues values=new ContentValues();
values.put("name","aaa");
values.put("publisher","ppp");
values.put("price","111");
int id=sqdb.update("table_name",values,"bookid=''5'' and booktype=''comic''",null);
puedes probar esto ...
db.execSQL("UPDATE DB_TABLE SET YOUR_COLUMN=''newValue'' WHERE id=6 ");
si su fila sqlite tiene una identificación única u otro equivalente, puede usar la cláusula where, como esta
update .... where id = {here is your unique row id}
solo trata de esta manera
String strFilter = "_id=" + Id;
ContentValues args = new ContentValues();
args.put(KEY_TITLE, title);
myDB.update("titles", args, strFilter, null);**
usa este código en tu DB `
public boolean updatedetails(long rowId,String name, String address)
{
ContentValues args = new ContentValues();
args.put(KEY_ROWID, rowId);
args.put(KEY_NAME, name);
args.put(KEY_ADDRESS, address);
int i = mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null);
return i > 0;
}
para actualizar en su sample.java use este código
//DB.open();
try{
//capture the data from UI
String name = ((EditText)findViewById(R.id.name)).getText().toString().trim();
String address =(EditText)findViewById(R.id.address)).getText().toString().trim();
//open Db
pdb.open();
//Save into DBS
pdb.updatedetails(RowId, name, address);
Toast.makeText(this, "Modified Successfully", Toast.LENGTH_SHORT).show();
pdb.close();
startActivity(new Intent(this, sample.class));
finish();
}catch (Exception e) {
Log.e(TAG_AVV, "errorrrrr !!");
e.printStackTrace();
}
pdb.close();
public void updateRecord(ContactModel contact) {
database = this.getReadableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COLUMN_FIRST_NAME, contact.getFirstName());
contentValues.put(COLUMN_LAST_NAME, contact.getLastName());
contentValues.put(COLUMN_NUMBER,contact.getNumber());
contentValues.put(COLUMN_BALANCE,contact.getBalance());
database.update(TABLE_NAME, contentValues, COLUMN_ID + " = ?", new String[]{contact.getID()});
database.close();
}
public long fillDataTempo(String table){
String[] table = new String[1];
tabela[0] = table;
ContentValues args = new ContentValues();
args.put(DBOpenHelper.DATA_HORA, new Date().toString());
args.put(DBOpenHelper.NOME_TABELA, nome_tabela);
return db.update(DATABASE_TABLE, args, STRING + " LIKE ?" ,tabela);
}