# mehrere Datenbankupdates nacheinander



## Fridolin (22. Mai 2004)

Hallo,
weiß wer von euch wie man am besten mehrere Datenbankupdates, die einem Event angehängt sind, nach und nach in die Datenbank eintragen kann?
Das stell ich mir so vor, du hast eine JTable in der in jeder Zeile ein anderer Datensatz steht und erst wenn alle Eingaben gemacht wurden hat der benutzer noch die auswahl auf abbrechen zu klicken und dann wird halt nichts gemacht, wenn er auf ok klickt sollen alle vorher angelegten Updatestrings hintereinander in die Datenbank geschrieben werden. Die Strings stehen in einem Array das seinen index jedesmal um eins erhöht und werden dann 
in einer schleife durchgelaufen und so sollen eben die updates mit stmt.executeUpdate( String sqlQuery(i) ) eingetragen werden. kann mir wer dabei helfen, am besten mit beispielcode denn das was ich bis jetzt habe geht so nicht Kann mir wer dabei helfen?


```
int i = 0;
public void actionPerformed(ActionEvent e)
{	
	Object quelle = e.getSource();
	String namen = name.getText();
	String identifikation = id.getText();
    if(quelle instanceof JButton)
    {  
        if(e.getActionCommand().equals("Anlegen"))
        {
        String inhalte[] = new String[4];	
        inhalte[0] = (String)(id.getText());
        inhalte[1] = (String)(name.getText());
        inhalte[2] = (String)(dauer.getText());
        inhalte[3] = (String)(alter.getText());
        model.addRow(inhalte);
sqlQuery(i) = "INSERT INTO Film VALUES (" +Integer.parseInt(identifikation)+", '"+namen +"', "+Integer.parseInt(dauer.getText())+", "+Integer.parseInt(alter.getText())+");";
i++;
System.out.println("ButtonAction: "+e.getActionCommand());
                                }
			else if(e.getActionCommand().equals("Ändern"))
			{
				if(table.getSelectedRows() != null & table.getSelectedColumns() != null)
	        	                                {
if(table.getSelectedColumn() == 0 | table.getSelectedColumn() == 1 | table.getSelectedColumn() == 2 | table.getSelectedColumn() == 3)
					{
						for(int m = 0; m < table.getRowCount(); m++)
						{
if(table.isCellSelected(m,0) == true | table.isCellSelected(m,1) == true | table.isCellSelected(m,2) == true | table.isCellSelected(m,3) == true)
							{
							String werteid = id.getText();	
							String wertename = name.getText();
							String wertedauer = dauer.getText();
							String wertealter = alter.getText();
							table.setValueAt(werteid, m, 0); 	
							table.setValueAt(wertename, m, 1);
							table.setValueAt(wertedauer, m, 2);
							table.setValueAt(wertealter, m, 3);
							}
						}
					} 			
	    		                }
sqlQuery(i) = "UPDATE Film SET Filmname = '"+namen +"', Dauer = "+Integer.parseInt(dauer.getText())+", Altersbeschränkung = "+Integer.parseInt(alter.getText())+" WHERE ID = " +Integer.parseInt(identifikation)+";";
i++;		
System.out.println("ButtonAction: "+e.getActionCommand());
                                }
    			else if(e.getActionCommand().equals("Löschen"))
    			{
    				if(table.getSelectedRows() != null & table.getSelectedColumns() != null)
    				{
    					for(int n = 0; n < table.getRowCount(); n++)
    					{
    					if(table.getSelectedRow() == n)	
    				    	{ 
    				                model.removeRow(n);
    					}
    				}
sqlQuery(i) = "DELETE FROM Film WHERE ID = " +Integer.parseInt(identifikation)+";";
i++;
System.out.println("ButtonAction: "+e.getActionCommand());
    				}
    			}	
else if(e.getActionCommand().equals("OK") )
{
Statement stmt;
Connection con = null;
String url = "jdbc:odbc:Datenbank";
	
try
	{	
	Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
	}
	catch( ClassNotFoundException event )
	{	
	System.out.println ( "Fehler bei ODBC-JDBC Treiber Initialisierung" + event );
	return;
	}	
		    
	try
		{
                                con = DriverManager.getConnection( url,"User","Password" );
		stmt = con.createStatement();
                                    for( int s = 0; s < i; s++)
                                    {
		    stmt.executeQuery( sqlQuery(s) );
                                    }
		stmt.close();
		}
  		catch( SQLException event)
		{
		System.out.println( "Fehler bei Tabellenabfrage " + event);	
		return;
		}	
finally
{
      	try
      	{
      	if ( con != null )
        {
        con.close();
      	}
      	}
      	catch ( SQLException event ) {}
    	}	
    	System.out.println("ButtonAction: "+e.getActionCommand());
                            }
	}
}
```


----------



## Fridolin (22. Mai 2004)

stmt.executeUpdate( sqlQuery(s) )
hab mich verschrieben

Jemand hat mir auch gesagt ich muss das mit Beginn Transaction und Commit Transaction/Rollback Transaction machen, ihr könnt hier auch ruhig eure Lösungen oder Ansätze hinein schreiben wenn ihr wollt
na kommts ihr seids das beste deutschsprachige java-forum hab ich irgendwo gehört


----------



## L-ectron-X (22. Mai 2004)

Um Daten in einer Datenbank durch Transaktionen persistent zu machen werden tatsächlich die commit()-Methoden aus dem Interface java.sql.Connection benutzt.
Eine fertige Lösung, für *Dein* Programm wird Dir hier niemand anbieten, aber Unterstützung auf jeden Fall!
http://www.galileocomputing.de/open...00010.htm#Rxxjavainsel_200010256Transaktionen
http://java.seite.net/jdbc/datenmani.html
Ich hoffe, das hilft Dir weiter.


----------



## Fridolin (22. Mai 2004)

Danke für die seite


----------

