Ich habe eine Aktivität (CreateLine), die Sie unten in einem Screenshot sehen können. Wenn der Benutzer diesen Bildschirm ausfüllt und auf die grüne Schaltfläche klickt, werden die Daten erfolgreich in meiner SQLite-Datenbank gespeichert. Obwohl ich nun möchte, dass der Benutzer zum CreateLine-Bildschirm zurückkehren und die vorhandenen Daten, die er zuvor gespeichert hat, bearbeiten oder aktualisieren kann. Ich benutze einen Datenbankhelfer mit allen Datenbankfunktionen darin.Ändern von Daten in SQLite-Datenbank gespeichert - Android
Aufgrund der Tatsache, dass die Funktion insertdata() die Daten korrekt hinzugefügt habe, dachte ich, ich sollte diesen Code einfach kopieren und in eine neue Funktion namens Updatedata() einfügen, aber ich glaube nicht, dass das funktioniert. Ich bin mir nicht sicher, wohin ich von hier aus gehen soll.
Datenbankfunktionen von DatabaseHelper:
public boolean insertData(String linetype, String packagetype, String quantity, String duration, String starttime, String endtime) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_2, linetype);
contentValues.put(COL_3, packagetype);
contentValues.put(COL_4, quantity);
contentValues.put(COL_5, duration);
contentValues.put(COL_6, starttime);
contentValues.put(COL_7, endtime);
long result = db.insert(TABLE_NAME, null, contentValues);
if (result == -1)
return false;
else
return true;
}
public boolean updateData(String linetype, String packagetype, String quantity, String duration, String starttime, String endtime) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_2, linetype);
contentValues.put(COL_3, packagetype);
contentValues.put(COL_4, quantity);
contentValues.put(COL_5, duration);
contentValues.put(COL_6, starttime);
contentValues.put(COL_7, endtime);
long result = db.update(TABLE_NAME,contentValues, null, null);
if (result == -1)
return false;
else
return true;
CreateLine Klasse (Code hinter überprüfen oder grüne Taste):
VerifyButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String spinnerSelection = String.valueOf(spinner.getSelectedItem());
String spinnerSelection2 = String.valueOf(spinner2.getSelectedItem());
String q = quantity.getText().toString();
String d = duration.getText().toString();
DateTime dateTime = new DateTime(yearNow, monthNow, dayNow, hourNow, minuteNow);
DateTimeFormatter fmt = DateTimeFormat.forPattern("E d MMM yyyy" + "\n" + " h:mm a ");
String formattedtime = fmt.print(dateTime);
CalculateButton.setText(formattedtime);
// Plus some hours, minutes, and seconds to the original DateTime.
DateTimeFormatter fmt2 = DateTimeFormat.forPattern("E d MMM yyyy" + "\n" + " h:mm a ");
DateTime dateTime1 = dateTime.plusHours(timeadded);
String endtimecalc = fmt2.print(dateTime1);
TextView endtime = (TextView) findViewById(endtimetextView);
endtime.setVisibility(View.VISIBLE);
endtime.setText(endtimecalc);
//INSERT DATA TO DATABASE
boolean isInserted = myDb.insertData(
spinnerSelection,
spinnerSelection2,
q,
d,
formattedtime,
endtimecalc);
if (isInserted == true)
Toast.makeText(CreateLine.this, "Data Inserted Successfully", Toast.LENGTH_LONG).show();
boolean isUpdated = myDb.updateData(
spinnerSelection,
spinnerSelection2,
q,
d,
formattedtime,
endtimecalc);
if (isUpdated == true)
Toast.makeText(CreateLine.this, "Data Successfully updated!" , Toast.LENGTH_LONG).show();
Screenshot von CreateLine Aktivität:
Ich bin Ich denke, ich könnte eine Art IF-Station brauchen überprüfen, ob bereits Daten vorhanden sind, bevor die Update-Funktion verwendet wird?
Wer irgendwelche Ideen?
vorhanden ist, wo Sie 'Updatedata()' nennen? –
Wenn Sie sehen können, wo ich kommentierte // UPDATE DATA, die Zeile darunter, dann übergebe ich die zu aktualisierenden Strings – TheAlmac2
Warum 'updateData' Methode ist genau ** das gleiche wie' insertData', es ruft sogar 'db .insert' ??? – pleft