# batch-Update wird nicht durchgeführt



## nieselfriem (22. Jul 2011)

ich habe folgende Klasse

```
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package empathie.DAO;

import java.sql.*;
import empathie.PersonUndJob.*;
import java.util.*;

public class UpdateAnTablesDAO {

    private String user;
    private String password;
    private Connection conn;
    private String dburl;
    private String className;

    public UpdateAnTablesDAO(String user, String password, String dburl, String className) {
        this.user = user;
        this.password = password;
        this.dburl = dburl;
        this.className = className;
    }

    public boolean updateAnHisTable(ArrayList<String> sqlList) throws SQLException, ClassNotFoundException {
        ArrayList<String> sql = new ArrayList<String>();
              
        int[] updateCount = null;
        boolean isUpdated = false;
        conn = AllowConnect.driver(this.user, this.password, this.dburl, this.className);

        if (conn != null) {
            conn.setAutoCommit(false);

            try {
                Statement stmt = conn.createStatement();

                for (int i = 0; i < sqlList.size(); i++) {
                    System.out.println("Sqlliste in "+sqlList.get(i));
                    stmt.addBatch(sqlList.get(i));
                }//for
               
                updateCount = stmt.executeBatch();
                System.out.println(updateCount[0]);
                             if (updateCount.length > 0) {
                    isUpdated = true;
                }//if

            } catch (BatchUpdateException e) {
                e.printStackTrace();
                conn.rollback();
                return false;
            }//catch

        }//if
        return isUpdated;
    }//updateAnHisTable
}//class
```
Dieser Klasse wird eine ArrayListe mit allen Änderungen der Datenbankeinträge übergeben. Diese Querystring sind auch so weit ok vom Syntax und es ist auch der Inhalt in der Liste . Es wird auch der Updatecounter updateCount erhöht, so das ich davon ausgehen könnte, das die Updates durchgeführt werden. Weiterhin wird auch keine Exception geworfen. Weder eine SQLException noch eine BatchUpdateException. Falls mach ich da falsch?

Ausgelöst wird die Methode von folgenden zeilen 

```
private void jSaveChangesAnHisBTActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        ArrayList<String> sqlList = new ArrayList<String>();
        boolean isUpdated;
     
       sqlList=hisTblMdl.getSqlList();
       if (hisTblMdl.getSqlList().size()>0) {
           UpdateAnTablesDAO ubdateTbl = new UpdateAnTablesDAO(this.userName, this.password, this.url, this.className);
           try {
            
            isUpdated = ubdateTbl.updateAnHisTable(hisTblMdl.getSqlList());//Übergabe der gesammelten SQLbefehle
           }catch (SQLException sqlEx) {
               sqlEx.printStackTrace();
           }catch(ClassNotFoundException cnfEx) {
               cnfEx.printStackTrace();
           }
       }
    }
```

Gruß niesel


----------



## XHelp (22. Jul 2011)

Spontan würde ich darauf tippen, dass du noch 
	
	
	
	





```
commit()
```
 aufrufen musst.


----------



## nieselfriem (22. Jul 2011)

gnnn! so ein misst. das war es danke


----------

