DB auslesen Datenübergabe an zu erstellende DB

scriptingmike

Grünschnabel
Hallo Leute,

vielleicht weiss hier jemand Rat. Im Forum habe ich noch nichts gefunden.
Die Situation:
1. Eine DB auslesen ... das funktioniert so weit (siehe QC).
2. Wenn neue Daten vorhanden sind eine Access DB (on the Fly) erstellen.
2a. eine Tabelle in der DB erstellen.
3. die Daten, die ich in der ersten DB ausgelesen habe in die AccessDB schreiben.

Wäre dankbar wenn ihr mir ab Schritt 2 helfen könntet.
 

Anhänge

Hi Mike,


> 2. Wenn neue Daten vorhanden sind eine Access DB (on the Fly) erstellen.
> 2a. eine Tabelle in der DB erstellen.
Gut, da sollte ich wissen, was bei dir neue Daten sind. Ich kann dir allerdings gleich sagen, dass ich die Tabelle lieber im Voraus erstellen würde, weil das innerhalb von Java u. U. eh nicht funktioniert...

> 3. die Daten, die ich in der ersten DB ausgelesen habe in die AccessDB schreiben.
Das sollte funktionieren (QC-1)


Gruß,
Gambler
 

Anhänge

Danke für die schnelle Hilfe.

Leider funktioniert das so nicht.
Bei der Übergabe ->

stmt2.setString(1, result1.getString("AOZROF"));

kriege ich die Meldung ->

The method setString(int, String) is undefined for the type Statement

Hier nochmal der QC:
Code:
Wurde entfernt da zuviele Fehler
 
Zuletzt bearbeitet:
wieder ein Stück weiter ...
beim ausführen des codes kommt eine neue Fehlermeldung?

Exception in thread "main" java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.clearParameter(JdbcOdbcPreparedStatement.java:1021)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setChar(JdbcOdbcPreparedStatement.java:3056)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setString(JdbcOdbcPreparedStatement.java:764)
at Query.main(Query.java:233)


Wer kann mir sagen warum?


Code:
wurde enfernt da zuviele Fehler

Schom mal grosses Danke
 
Zuletzt bearbeitet:
Hi,

da dein Source Code den du hier gepostet hast leider keine 233 Zeilen umfasst und man somit nicht nachschauen kann wo der Fehler auftaucht kann man nur mutmaßen.

Eine NullPointerException deutet immer darauf hin, dass eine Variable evtl. noch nicht initialisiert worden ist.

Java:
JTextField sqlStmt;

Hier wird die Variable sqlStmt angelegt, der Zeiger weißt aber auf einen noch nicht initialisierten Bereich im Speicher (NULL).

Gruß

Romsl
 
Danke @romsl

das sagt mir nur nicht viel ..... :confused

Hier die letzte Fehlermeldung:

Datenbankzugriff mit JDBC
================================


Verbinden_1 ......
Verbinden_2 ......
Verbindungsaufbau erfolgreich

Exception in thread "main" java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.clearParameter(JdbcOdbcPreparedStatement.java:1021)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setChar(JdbcOdbcPreparedStatement.java:3056)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setString(JdbcOdbcPreparedStatement.java:764)
at Query.main(Query.java:156)

Ich hatte die Kommentare alle entfernt ....

Hier nochmal der bereinigte .... vollständige Code

Code:
Hat sich mittlerweile auch erledigt ....
 
Zuletzt bearbeitet:
So mittlerweile bin ich wieder etwas weiter gekommen.
Jetzt ärgert mich dafür folgende Fehlermeldung:

Fehler: java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Syntaxfehler in der INSERT INTO-Anweisung.

bei System.out.println(sql2) kommt raus:

INSERT INTO JobList (Layout, PieceCount, Remaining, Status, Cut, Move, Comment, X_Offset, Y_Offset, SernoStart, Angle, Text1, Text2, Text3, Text4, Text5, Text6, Text7, Text8, Text9, Text10, Text11, Text12, Text13, Text14, Text15, Text16, Text17, Text18, Text19, Text20, ST1ROF, ST2ROF, ST3ROF, ST4ROF, ST5ROF, AOZROF) VALUES ('C:\Ordner1\Ordner2\201383.vlm', 1, 0, 1, 0, 1, '', 0, 0, 0, 0, 'CNVMS04-4085G-43/G M3G084-DF01-01 ', '43 M21865121 ', '07/06 ', 'Mobil Greasrex 47 ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 1, , , , , 'ADE6200206')

Vielleicht sieht ja jemand wo der Fehler ist ... ich finde ihn nicht ....
Danke schon mal ....

Code:
import java.sql.*;

public class Query{

	
	// Variablen für die DB Connections
	static String url;
	static String dsn1, dsn2;
	static String user, user2;
	static String password, password2;
	static String Driver;
	static String sql1, sql2;
	static Connection con1, con2;
	static Statement stmt1, stmt2;
	static ResultSet result1, result2;
	
	static int messer, vorschub;
	static int zaehler, zudruckenstk, uebrigestk, Druckstatus;
	static int xpos, ypos, serstart, winkel;
	static String PfadzurVorlage, kurzmzz, commentar;
	
	// für sql1
	static String aoz, slo, iti, kiv, mzz, t01, t02, t03, t04, t05, t06, t07;
	static String t08, t09, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19;
	static String t20, st1, st2, st3, st4, st5, trd;
		
	public static void main(String arguments[]){
		// Abfragen der Verbindungsparameter
		System.out.println("\n\n\n\n\n");
		System.out.println("Datenbankzugriff mit JDBC");
		System.out.println("================================\n\n");
		
		// Adresse der zu verbindenden Datenbank
		url = "jdbc:odbc:";
		dsn1= "RofinDB2";
		user = "USERNAME";
		password = "GEHEIM";
		
		dsn2 = "RofinACC";
		user2 = ""; 		// wird nicht benoetigt
		password2 = "";		// wird nicht benoetigt
		
		try{
			// JDBC over Odbc Treiber laden
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			
			// Verbindung mit der DB2 - Datenbank aufnehmen
			con1 = DriverManager.getConnection(url+dsn1, user, password);
			System.out.println("Verbinden_1 ...... ");
			
			// Verbindung zur Access - Datenbank aufnehmen
			con2 = DriverManager.getConnection(url+dsn2, user2, password2);
			System.out.println("Verbinden_2 ...... ");
		}
		catch (SQLException e){
			System.out.println("Fehler beim Verbindungsaufbau!");
			System.exit(0);
		}
		catch (ClassNotFoundException e){
			System.out.println("JDBC over ODBC nicht gefunden!");
			System.exit(0);
		}
		
		System.out.println("Verbindungsaufbau erfolgreich\n");
		
		// Ausgabe der Datensätze
		try{
			// SQL1-Select-Befehl
			sql1 = "SELECT * FROM DBTLIB.VRROFP00 WHERE ST1ROF = '1' ORDER BY AOZROF,KIVROF";
									
			// Statement erstellen um SQL1-Befehl auszuführen
			stmt1 = con1.createStatement();
			
			// SQL1-Befehl ausführen
			result1 = stmt1.executeQuery(sql1);
			
			while (result1.next())
			{
				// Variablen auffüllen
				aoz = result1.getString("AOZROF");
				slo = result1.getString("SLOROF");
				iti = result1.getString("ITIROF");
				kiv = result1.getString("KIVROF");
				mzz = result1.getString("MZZROF");				
				t01 = result1.getString("T01ROF");
				t02 = result1.getString("T02ROF");
				t03 = result1.getString("T03ROF");
				t04 = result1.getString("T04ROF");
				t05 = result1.getString("T05ROF");
				t06 = result1.getString("T06ROF");
				t07 = result1.getString("T07ROF");
				t08 = result1.getString("T08ROF");
				t09 = result1.getString("T09ROF");
				t10 = result1.getString("T10ROF");
				t11 = result1.getString("T11ROF");
				t12 = result1.getString("T12ROF");
				t13 = result1.getString("T13ROF");
				t14 = result1.getString("T14ROF");
				t15 = result1.getString("T15ROF");
				t16 = result1.getString("T16ROF");
				t17 = result1.getString("T17ROF");
				t18 = result1.getString("T18ROF");
				t19 = result1.getString("T19ROF");
				t20 = result1.getString("T20ROF");
				st1 = result1.getString("ST1ROF");
				st2 = result1.getString("ST2ROF");
				st3 = result1.getString("ST3ROF");
				st4 = result1.getString("ST4ROF");
				st5 = result1.getString("ST5ROF");
				trd = result1.getString("TRDROF");
				
				kurzmzz = mzz.trim();
				PfadzurVorlage ="C:\\Ordner1\\Ordner2\\"+kurzmzz+".vlm";
				zudruckenstk = 1;
				uebrigestk = 0;
				Druckstatus = 1;
				messer = 0;
				vorschub = 1;
				commentar = "";
				xpos = 0;
				ypos = 0;
				serstart = 0;
				winkel = 0;	
				
				sql2 = "INSERT INTO JobList (Layout, PieceCount, Remaining, "
					+"Status, Cut, Move, Comment, X_Offset, Y_Offset, "
					+"SernoStart, Angle, Text1, Text2, Text3, Text4, Text5, "
					+"Text6, Text7, Text8, Text9, Text10, Text11, Text12, "
					+"Text13, Text14, Text15, Text16, Text17, Text18, Text19, "
					+"Text20, ST1ROF, ST2ROF, ST3ROF, ST4ROF, ST5ROF, AOZROF"
					+") VALUES ('"
					+PfadzurVorlage+"', "+zudruckenstk+", "+uebrigestk
					+", "+Druckstatus+", "+messer+", "+vorschub+", '"+commentar
					+"', "+xpos+", "+ypos+", "+serstart+", "+winkel+", '"+t01
					+"', '"+t02+"', '"+t03+"', '"+t04+"', '"+t05+"', '"+t06+"', '"+t07
					+"', '"+t08+"', '"+t09+"', '"+t10+"', '"+t11+"', '"+t12+"', '"+t13
					+"', '"+t14+"', '"+t15+"', '"+t16+"', '"+t17+"', '"+t18+"', '"+t19
					+"', '"+t20+"', "+st1+", "+st2+", "+st3+", "+st4+", "+st5
					+", '"+aoz
					+"')";
				
				System.out.println(sql2);
				
				stmt2 = con2.createStatement();
				stmt2.executeUpdate(sql2);

			}
			
			// Verbindung_1 schliessen
			result1.close();
			stmt1.close();
			con1.close();
		}
		catch(Exception e) { 
			System.out.println("Fehler: "+e);
		}
	}
}
 
Zurück