J'essaie de mettre à jour une ligne spécifique depuis un moment et il semble qu'il existe deux façons de procéder. D'après ce que j'ai lu et essayé, vous pouvez simplement utiliser le:
execSQL(String sql)
méthode
ou la:
update(String table, ContentValues values, String whereClause, String[] whereArgs)
, méthode.
(Faites-moi savoir si cela est incorrect car je suis nouveau sur Android et très nouveau sur SQL.)
Alors laissez-moi arriver à mon code actuel.
myDB.update(TableName, "(Field1, Field2, Field3)" + " VALUES ('Bob', 19, 'Male')", "where _id = 1", null);
J'essaie d'accomplir ceci:
Mettez à jour Field1, Field2 et Field3 où la clé primaire (_id) est égale à 1.
Eclipse me donne une ligne rouge juste sous le mot "update" et me donne cette explication:
La méthode update (String, ContentValues, String, String []) dans le type SQLiteDatabase n'est pas applicable pour les arguments (String, String, String, null)
J'imagine que je n'attribue pas correctement les ContentValues. Est-ce que quelqu'un peut-il me montrer la bonne direction?
Commencez par créer un objet 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");
Puis utilisez la méthode update, cela devrait fonctionner maintenant:
myDB.update(TableName, cv, "_id="+id, null);
Manière simple:
String strSQL = "UPDATE myTable SET Column1 = someValue WHERE columnId = "+ someValue;
myDataBase.execSQL(strSQL);
Au début, créez un ContentValues object:
ContentValues cv = new ContentValues();
cv.put("Field1","Bob");
cv.put("Field2","19");
Ensuite, utilisez la méthode de mise à jour. Notez que le troisième argument est la clause where. Le "?" est un espace réservé. Il sera remplacé par le quatrième argument (id)
myDB.update(MY_TABLE_NAME, cv, "_id = ?", new String[]{id});
C'est la solution de nettoyage pour mettre à jour une ligne spécifique.
Ce code devrait corriger votre exemple:
ContentValues data=new ContentValues();
data.put("Field1","bob");
data.put("Field2",19);
data.put("Field3","male");
DB.update(Tablename, data, "_id=" + id, null);
tu peux essayer ça ...
db.execSQL("UPDATE DB_TABLE SET YOUR_COLUMN='newValue' WHERE id=6 ");
utilisez ce code dans votre base de données `
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;
}
pour la mise à jour dans votre échantillon.Java utilise ce code
//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();
espérons que cela vous aidera:
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;
}
Vous essayez cette méthode de mise à jour dans 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);
Peut essayer comme ça:
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);
Pour les mises à jour, vous devez appeler setTransactionSuccessfull pour que les modifications soient validées de la manière suivante:
db.beginTransaction();
try {
db.update(...)
db.setTransactionSuccessfull(); // changes get rolled back if this not called
} finally {
db.endTransaction(); // commit or rollback
}
// Voici un exemple de code simple pour la mise à jour
// déclare d'abord ceci
private DatabaseAppHelper dbhelper;
private SQLiteDatabase db;
// initialise le suivant
dbhelper=new DatabaseAppHelper(this);
db=dbhelper.getWritableDatabase();
// code de mise à jour
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);
// mettre ur id au lieu du "point d'interrogation" est une fonction dans mes préférences communes.
si votre ligne sqlite a un identifiant unique ou un autre équivalent, vous pouvez utiliser la clause where, comme ceci
update .... where id = {here is your unique row id}
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();
}
juste essayer de cette façon
String strFilter = "_id=" + Id;
ContentValues args = new ContentValues();
args.put(KEY_TITLE, title);
myDB.update("titles", args, strFilter, null);**
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);
}
Méthode de mise à jour dans 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);
}