von List getSelected auf ResultSet Datenbank löschen

Status
Nicht offen für weitere Antworten.

KayJ

Mitglied
Folgendes Problem:

ich lasse mir eine Liste erstellen mit Datebank Einträgen
vom ResultSet (songlist).
mit
Java:
songlist = Main.DB.executeQry("select rowid, Artist, Title, Genre from '" + active + "' Order by Artist asc, Title asc");
DefaultListModel m = new DefaultListModel();
JList l = new JList(m);
int[] selectedIx = l.getSelectedIndices();
...

while (songlist.next())
                    {
 s = songlist.getString("Artist")...
m.addElement(s);
}
das ganze in Pane und nem Button zum löschen der getSelected Einträge
Java:
JScrollPane pane = new JScrollPane(l);
JButton delButton = new JButton("Delete Song");

delButton.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e) {


          if(l.getSelectedIndices().length > 0) {
  int[] tmp = l.getSelectedIndices();
  int[] selectedIndices = l.getSelectedIndices();

  for (int i = tmp.length-1; i >=0; i--) {
      selectedIndices = l.getSelectedIndices();
      System.out.println("selectedIndices:"+selectedIndices);
      m.removeElementAt(selectedIndices[i]);
}

Problem ist wie komme ich von den selectedIndices auf die Rows die ich löschen will,
Wie ihr schon seht sortiere ich die Einträge im RS nach Artist, Title.
d.h. wenn ich mir den RS ausgebe steht in Row 1 zb.
rowid Artist Title Genre
7 ABBA ... ...

d.h. ich möchte die 7. Row meiner DB löschen

Indizes beginnen mit 0, Rows mit 1
d.h. ich muss aufjedenfall inkrementieren
aber zb bei der Ausgabe von indices steht kein int wert sondern wohl ein Hash
z.b.: selectedIndices:[I@3a81cdcc

so habe ich es schon versucht:
Java:
                            songlist.absolute(selectedIndices[i+1]);
                            rowid = songlist.getRowId("rowid");
                            Main.DB.executeStmt("delete from '"+active+"' where rowid='"+rowid+"'");

selectedIndices[i+1] beinhaltet aber eben kein int. deshalb wird auch Exception geworfen.

Jemand nen Tipp ?
 
selectedIndizes ist ein int-Array. Wenn du wissen willst, was drinsteht, musst du System.out.println(Arrays.toString(selectedIndizes)) benutzen, die toString-Methode am Array selbst liefert nur den schon erwähnten HashCode-Schrott.
 
danke habs jetzt hinbekommen.
Das Problem lag nicht bei Java, sondern daran das meine Datenbank kein Scrolling für den Cursor erlaubt hat,
deshalb ging songlist.absolute nicht. Weil meine Liste von hinten abgearbeitet wird und somit der Cursor auch zurück wandern müsste. Habs jetzt über mehrfache Ausgabe des ResultSets gelöst bei dem ich beim ersten Durchlauf die Anzahl der Rows zählen lasse die ich dann als Grösse Meines Arrays wähle in die ich dann beim 2. Schritt die RowIDs fülle.

Dank deines Tipps konnte ich mir die Werte der Arrays aber gut ausgeben lassen.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben