SQLite dans Android Comment mettre à jour une ligne spécifique

J’ai essayé de mettre à jour une ligne spécifique pendant un moment maintenant, et il semble qu’il y ait deux manières de le faire. De ce que j’ai lu et essayé, vous pouvez simplement utiliser le:

execSQL(Ssortingng sql)

ou la:

update(Ssortingng table, ContentValues values, Ssortingng whereClause, Ssortingng[] whereArgs) .

(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 en dessous du mot “update” et me donne cette explication:

La méthode update (Ssortingng, ContentValues, Ssortingng, Ssortingng []) du type SQLiteDatabase n’est pas applicable aux arguments (Ssortingng, Ssortingng, Ssortingng, null)

Je suppose que je n’affecte pas correctement les ContentValues. Est-ce que quelqu’un peut-il me montrer la bonne direction?

Commencez par créer un object ContentValues:

 ContentValues cv = new ContentValues(); cv.put("Field1","Bob"); //These Fields should be your Ssortingng values of actual column names cv.put("Field2","19"); cv.put("Field2","Male"); 

Ensuite, utilisez la méthode de mise à jour, cela devrait fonctionner maintenant:

 myDB.update(TableName, cv, "_id="+id, null); 

Manière simple:

 Ssortingng strSQL = "UPDATE myTable SET Column1 = someValue WHERE columnId = "+ someValue; myDataBase.execSQL(strSQL); 

Créez d’abord un object ContentValues :

 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 quasortingème argument (id)

 myDB.update(MY_TABLE_NAME, cv, "_id = ?", new Ssortingng[]{id}); 

Ceci est la solution de nettoyage pour mettre à jour une ligne spécifique.

  1. Personnellement, je préfère .update pour sa commodité. Mais execsql travaillera de même.
  2. Vous avez raison de penser que le problème concerne vos valeurs de contenu. Vous devez créer un object ContentValue et y placer les valeurs de votre ligne de firebase database.

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); 

vous pouvez essayer ça …

 db.execSQL("UPDATE DB_TABLE SET YOUR_COLUMN='newValue' WHERE id=6 "); 

utilisez ce code dans votre firebase database `

 public boolean updatedetails(long rowId,Ssortingng name, Ssortingng 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 exemple.java utilisez ce code

  //DB.open(); try{ //capture the data from UI Ssortingng name = ((EditText)findViewById(R.id.name)).getText().toSsortingng().sortingm(); Ssortingng address =(EditText)findViewById(R.id.address)).getText().toSsortingng().sortingm(); //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(); 

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); 

J’espère que cela vous aidera:

 public boolean updatedetails(long rowId, Ssortingng 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; } 

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} 

Pour les mises à jour, vous devez appeler setTransactionSuccessfull pour que les modifications soient validées comme suit:

 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’abord déclarer cela

 private DatabaseAppHelper dbhelper; private SQLiteDatabase db; 

// initialise les éléments suivants

 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 de ma préférence partagée.

Peut essayer comme ceci:

 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); 

juste essayer de cette façon

  Ssortingng strFilter = "_id=" + Id; ContentValues args = new ContentValues(); args.put(KEY_TITLE, title); myDB.update("titles", args, strFilter, null);** 
 public long fillDataTempo(Ssortingng table){ Ssortingng[] table = new Ssortingng[1]; tabela[0] = table; ContentValues args = new ContentValues(); args.put(DBOpenHelper.DATA_HORA, new Date().toSsortingng()); args.put(DBOpenHelper.NOME_TABELA, nome_tabela); return db.update(DATABASE_TABLE, args, STRING + " LIKE ?" ,tabela); } 
  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 Ssortingng[]{contact.getID()}); database.close(); } 

Méthode de mise à jour dans SQLite:

 public void updateMethod(Ssortingng name, Ssortingng updatename){ Ssortingng query="update students set email = ? where name = ?"; Ssortingng[] selections={updatename, name}; Cursor cursor=db.rawQuery(query, selections); }