it-swarm.com.de

SQLite in Android So aktualisieren Sie eine bestimmte Zeile

Ich habe jetzt versucht, eine bestimmte Zeile zu aktualisieren, und es gibt zwei Möglichkeiten, dies zu tun. Von dem, was ich gelesen und ausprobiert habe, können Sie einfach Folgendes verwenden:

execSQL(String sql) Methode 

oder der:

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

(Lassen Sie mich wissen, ob dies falsch ist, da ich neu in Android und sehr neu in SQL bin.)

Lassen Sie mich zu meinem aktuellen Code kommen.

myDB.update(TableName, "(Field1, Field2, Field3)" + " VALUES ('Bob', 19, 'Male')", "where _id = 1", null);

Ich versuche das zu erreichen:

Aktualisieren Sie Field1, Field2 und Field3, wobei der Primärschlüssel (_id) gleich 1 ist.

Eclipse gibt mir eine rote Linie direkt unter dem Word "Update" und gibt mir diese Erklärung:

Die Methode update (String, ContentValues, String, String []) vom Typ SQLiteDatabase ist für die Argumente nicht anwendbar (String, String, String, null).

Ich vermute, ich ordne die ContentValues ​​nicht richtig zu. Kann mir jemand die richtige Richtung zeigen?

121
EGHDK

Erstellen Sie zunächst ein ContentValues-Objekt:

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

Dann benutze die Update-Methode, die sollte jetzt funktionieren

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

Einfacher Weg:

String strSQL = "UPDATE myTable SET Column1 = someValue WHERE columnId = "+ someValue;

myDataBase.execSQL(strSQL);
47
Yaqub Ahmad

Erstellen Sie zunächst ein ContentValues ​​Objekt:

ContentValues cv = new ContentValues();
cv.put("Field1","Bob");
cv.put("Field2","19");

Verwenden Sie dann die Aktualisierungsmethode. Das dritte Argument ist die where-Klausel. Das "?" ist ein Platzhalter. Es wird durch das vierte Argument (id) ersetzt.

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

Dies ist die Bereinigungslösung zum Aktualisieren einer bestimmten Zeile.

33
funcoder
  1. Ich persönlich bevorzuge. Update für seine Bequemlichkeit. Execsql funktioniert aber genauso. 
  2. Sie haben mit Ihrer Vermutung recht, dass das Problem Ihre inhaltlichen Werte sind. Sie sollten ein ContentValue-Objekt erstellen und die Werte für Ihre Datenbankzeile dort einfügen.

Dieser Code sollte Ihr Beispiel korrigieren:

 ContentValues data=new ContentValues();
 data.put("Field1","bob");
 data.put("Field2",19);
 data.put("Field3","male");
 DB.update(Tablename, data, "_id=" + id, null);
23
KarlKarlsom

sie können dies versuchen ...

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

verwenden Sie diesen Code in Ihrer 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;
     }

für die Aktualisierung in Ihrem Beispiel verwenden Sie diesen 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();
5
Rahul Baradia

hoffe das hilft dir:

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;   
 }
4
sachi

Sie versuchen diese eine Aktualisierungsmethode in 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);
4
Android

Kann so versuchen:

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);
3
Amir john

Für Updates müssen Sie setTransactionSuccessfull aufrufen, damit Änderungen übernommen werden:

db.beginTransaction();
try {
    db.update(...) 
    db.setTransactionSuccessfull(); // changes get rolled back if this not called
} finally {
   db.endTransaction(); // commit or rollback
}
2
Fracdroid

// Hier ist ein einfacher Beispielcode für das Update 

// erkläre das zuerst

private DatabaseAppHelper dbhelper;
private SQLiteDatabase db;

// das Folgende initialisieren

dbhelper=new DatabaseAppHelper(this);
        db=dbhelper.getWritableDatabase();

// Aktualisierungscode

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

// Ur-ID anstelle von 'Fragezeichen' setzen ist eine Funktion in meiner gemeinsamen Präferenz.

2

wenn Ihre sqlite-Zeile eine eindeutige ID oder ein anderes Äquivalent hat, können Sie die where-Klausel wie folgt verwenden

update .... where id = {here is your unique row id}
2
mcxiaoke
 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();
}
2
sumit mehra

versuchen Sie es einfach so

  String strFilter = "_id=" + Id;
  ContentValues args = new ContentValues();
  args.put(KEY_TITLE, title);
  myDB.update("titles", args, strFilter, null);**
1
Satyam
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);
}
0
João Rosa

Methode zur Aktualisierung in 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);
}
0