[DB2/JDBC] - Nur einmal INSERT möglich ?

AvS

Erfahrenes Mitglied
Hi Leute,

unsere Aufgabe besteht darin, mehrere Tabellen mit Inhalt zu füllen. Ich kann allerdings nur bei der ersten Tabelle "branch" einen Erfolg verzeichnen. Die andere Tabelle wird einfach "übergangen". Bitte nicht über die Values wundern, das sind nur Platzhalter um die Länge der Variabeln auszufüllen !

Hier mal der Quellcode in Java :

Java:
import java.sql.*;
import java.io.*;
import java.util.Random;

public class benchmark_functions 
{
	public static Connection verbindung(String user, String passwd) throws SQLException
	{
		String dburl = "jdbc:db2://localhost:50000/BENCH";
		Connection conn = DriverManager.getConnection ( dburl , user, passwd);
		conn.setAutoCommit(false); 
		return conn;
	}
	
	public static void fill_bench(Connection conn, int n, int i)
	{	
		try
		{
		while(i<=n)
        {
	 	   PreparedStatement stmt = conn.prepareStatement(
			   "INSERT INTO BRANCHES (BRANCHID, BRANCHNAME, BALANCE, ADDRESS)" +
			   "VALUES (" + i + ", 'aaaaaaaaaaaaaaaaaaaa' , 0, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')");
		    stmt.executeUpdate();
	 	     i++;
	    } 
		conn.commit();
		System.out.println("Daten erfolgreich eingetragen !");
		} catch(SQLException e)
		{
			e.getMessage();
		}
     }
		
	
	
	public static void fill_accounts(Connection conn, int n, int i)
	{
		try
		{
		while(i<=n)
			{
			PreparedStatement stmt = conn.prepareStatement(
			"INSERT INTO ACCOUNTS (ACCID, NAME, BALANCE, BRANCHID, ADDRESS)" + 
			"VALUES (" + i + ", 'aaaaaaaaaaaaaaaaaa', 0 , 1 , 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')");
			stmt.executeUpdate();
			i++;
			}
			System.out.println("Daten erfolgreich eingefügt !");
		}catch(SQLException e)
		{
			e.getMessage();
		}
	}

	public static void fill_tellers(Connection conn)
	{
		System.out.println("Verbindung hergestellt !");
	}
	
	public static void fill_history(Connection conn)
	{
		System.out.println("Verbindung hergestellt !");
	}
	
	public static void main(String[] args) throws IOException
	{
		try 
		{
			System.out.println("Bitte N eingeben : ");
			int n = io.read_int();
			int i = 1;
			benchmark_functions.fill_bench(benchmark_functions.verbindung(args[0], args[1]), n, i);
			benchmark_functions.fill_accounts(benchmark_functions.verbindung(args[0], args[1]), n, i);
		/*	benchmark_functions.fill_tellers(benchmark_functions.verbindung(args[0], args[1]));
			benchmark_functions.fill_history(benchmark_functions.verbindung(args[0], args[1]));	*/
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}

	}

}
 
Moin AvS,

steht doch oben - nach dem INSERTen in die ACCOUNTS-Tabelle fehlt das COMMIT.
oder das "conn.commit();" um es mit Java zu sagen.
Und AutoCommit hast Du ja (richtigerweise) vorher abgeschalten.
Kein Commit, nix auf Pladde.
Keine Arme, keine Kekse..

Grüße
Biber
 
  • Gefällt mir
Reaktionen: AvS
Zurück