Oracle Update Befehl in Datenbank anhand einer Schleife

Anubis273

Mitglied
Hallo Zusammen !

Ich hänge gerade an meinem Java Code fest und komme leider nicht weiter. Es geht darum, dass ich in einer anderen Java Klasse Daten in ein Text Dokument speichere und dieses lokal auf dem Rechner liegt. Nun gehe ich hin und lese dieses Dokument in meiner aktuellen Klasse hier aus und schreibe die Werte in eine Oracle Datenbank. Wenn ich die Klasse starte, schreibt er mir in das System out alle Werte ( In diesem Fall Typ der Datenbank ) in die Konsole. Wenn ich aber die Datenbank mit dem executeUpdate so befülle, schreibt er nur den letzten Wert der Schleife in die gesamte Spalte der Datenbank. Ich habe also in der Datenbank ca. 100 mal den letzten Wert der Schleife stehen und nicht wie in dem System.out richtig angegeben alle Datenbank Versionen.

Hier ist mal der Javacode zu der soweit funktionierenden Klasse:

import java.io.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.StringTokenizer;
import java.sql.*;
import java.util.ArrayList;
import java.sql.*;
import java.util.*;

public class InsertFileDataAsBLOB {

static String[] set = null;
static String url = "jdbc:eek:racle:thin:mad:xxx:1521:xxx";
static String userid = "xxx";
static String password = "xxx";
static Connection con = null;

public static void main(String[] args) throws Exception {

Connection con = getOracleJDBCConnection();
if(con!= null){
System.out.println("Verbindung zur Datenbank xxx hergestellt !");

Statement st=con.createStatement();
FileInputStream fstream = new FileInputStream ("C:/Users/xxx/Desktop/Incoming.txt");
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
ArrayList list=new ArrayList();
while ((strLine = br.readLine()) != null){
list.add(strLine);
}
Iterator itr;
for (itr=list.iterator(); itr.hasNext(); ){
String str=itr.next().toString();
String [] splitSt =str.split(" ");
String Datenbank="",IP="";
for (int i = 0 ; i < splitSt.length ; i++) {
Datenbank=splitSt[0];


}
System.out.println(Datenbank); // Zeigt alle Datenbank Versionen an !

int k=st.executeUpdate("UPDATE ANWENDUNG SET DBTYP = '"+Datenbank+"'");
// Dieses Update schreibt nur den letzten Wert der Schleife in die DB

}
}else{
System.out.println("Kann keine Verbindung zur Datenbank herstellen !");
}
}

public static Connection getOracleJDBCConnection(){

try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

for(Enumeration<Driver> e=DriverManager.getDrivers(); e.hasMoreElements(); )
System.out.println(e.nextElement().getClass().getName());

} catch(java.lang.ClassNotFoundException e) {
System.err.print("ClassNotFoundException: ");
System.err.println(e.getMessage());

}try {
con = DriverManager.getConnection(url, userid, password);
} catch(SQLException ex) {
System.err.println("SQLException: " + ex.getMessage());
}

return con;
}
}
 
G

Gast2

Gast
Variablen schreibt man klein, benutz bitte Java Code tags und debuge dein code doch mal dann kommst bestimmt sofort auf deinen fehler ;)
 

Anubis273

Mitglied
Ah sorry, die Tags hab ich natürlich in der Eile vergessen. Variablen schreibt man klein, richtig. Kann aber grad keine finden die ich Groß geschrieben hab !? Hier ist nochmal der Code in Java Tags:


Java:
import java.io.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.StringTokenizer;
import java.sql.*;
import java.util.ArrayList;
import java.sql.*;
import java.util.*;

public class InsertFileDataAsBLOB {

static String[] set = null; 
static String url = "jdbc:oracle:thin:@xxx:1521:xxx";
static String userid = "xxx";
static String password = "xxx";
static Connection con = null;

public static void main(String[] args) throws Exception {

Connection con = getOracleJDBCConnection();
if(con!= null){
System.out.println("Verbindung zur Datenbank xxx hergestellt !");

Statement st=con.createStatement();
FileInputStream fstream = new FileInputStream ("C:/Users/xxx/Desktop/Incoming.txt");
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
ArrayList list=new ArrayList();
while ((strLine = br.readLine()) != null){
list.add(strLine);
}
Iterator itr;
for (itr=list.iterator(); itr.hasNext(); ){
String str=itr.next().toString(); 
String [] splitSt =str.split(" ");
String Datenbank="",IP=""; 
for (int i = 0 ; i < splitSt.length ; i++) {
Datenbank=splitSt[0];


}
System.out.println(Datenbank); // Zeigt alle Datenbank Versionen an !

int k=st.executeUpdate("UPDATE ANWENDUNG SET DBTYP = '"+Datenbank+"'");
// Dieses Update schreibt nur den letzten Wert der Schleife in die DB 

}
}else{
System.out.println("Kann keine Verbindung zur Datenbank herstellen !");
}
}

public static Connection getOracleJDBCConnection(){

try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

for(Enumeration<Driver> e=DriverManager.getDrivers(); e.hasMoreElements(); )
System.out.println(e.nextElement().getClass().getName());

} catch(java.lang.ClassNotFoundException e) {
System.err.print("ClassNotFoundException: ");
System.err.println(e.getMessage());

}try {
con = DriverManager.getConnection(url, userid, password);
} catch(SQLException ex) {
System.err.println("SQLException: " + ex.getMessage());
}

return con; 
} 
}
 
G

Gast2

Gast
Ah sorry, die Tags hab ich natürlich in der Eile vergessen. Variablen schreibt man klein, richtig. Kann aber grad keine finden die ich Groß geschrieben hab !? Hier ist nochmal der Code in Java Tags:

String Datenbank="",IP=""; ???
Und was hat das debugen gebracht...

Solltest dein Java Code mal formatieren, dan erkennt man auch was;)
 
Zuletzt bearbeitet von einem Moderator:

Anubis273

Mitglied
Ach die String´s meinst du. Ich achte schon darauf, dass ich die Datentypen welche ich deklariere klein Schreibe. Die String´s hatte ich außer acht gelassen.
Auf deinen Rat hin hab ich den Debugger durchlaufen lassen. Dieser läuft ganz normal durch das Programm durch und gibt mir die Werte aus wie ich sie auch brauche. Nur wenn ich das halt in die DB Schreiben möchte, schreibt er immer nur den ersten oder den letzten Wert der Ausgabe hinein, je nachdem wo ich die executeUpdate Zeile halt hinschreibe.
Hab auch schon einige Sachen durch probiert, leider bin ich bisher noch nicht auf die Lösung gekommen.
 

turtle

Top Contributor
Kannst Du bitte mal die Zeile
Java:
int k=st.executeUpdate("UPDATE ANWENDUNG SET DBTYP = '"+Datenbank+"'");
abändern in
Java:
		System.out.println("UPDATE ANWENDUNG SET DBTYP = '"+Datenbank+"'");
und uns mitteilen, was da raus kommt?
 
G

Gast2

Gast
Lass mal dein k ausgeben...
Hast du irgendwo ein commit gemacht?

Außerdem würde ich bei einer Oracle Datenbank den OracleDriver nehmen
 

Anubis273

Mitglied
Erst einmal vielen Dank an Turtle und SirWayne ! Nachdem ich mir an diversen stellen System.out´s gesetzt habe und mir verschiedene Variablen an verschiedenen Stellen habe ausgeben lassen, hab ich es nun endlich mit Hilfe eines Kollegen gelöst !
Natürlich möchte ich euch den funktionierenden Code wie ich nun ein Textfile auslese und in eine Oracle Datenbank schreibe nicht vorenthalten !

Hier nun meine Klasse:

Java:
import java.io.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.StringTokenizer;
import java.sql.*;
import java.util.ArrayList;
import java.sql.*;

	public class InsertFileDataAsBLOB {
		
	    static String[] set = null; 
	    static String url = "jdbc:oracle:thin:@xxx.de:1521:xxx";
	    static String userid = "xxx";
	    static String password = "xxx";
	    static Connection con = null;
	    
	    public static void main(String[] args) throws Exception {
	    
	    	 Connection con = getOracleJDBCConnection();
	           if(con!= null){
	           System.out.println("Verbindung zur Datenbank xxx hergestellt !");
	          
	           Statement st=con.createStatement();
	           FileInputStream fstream = new FileInputStream("C:/Users/xxx/Desktop/Incoming.txt");
	           DataInputStream in = new DataInputStream(fstream);
	           BufferedReader br = new BufferedReader(new InputStreamReader(in));
	           String strLine;
	           ArrayList list=new ArrayList();
	           while ((strLine = br.readLine()) != null){
	        	   list.add(strLine);
	           }
	           Iterator itr;
	           for (itr=list.iterator(); itr.hasNext(); ){
	        	   String str=itr.next().toString(); 
	        	   String datenbank="",sid="";
	        	   String [] splitSt =str.split(";");
	        	   sid = splitSt[0];
        		   datenbank = splitSt[1];
        		   		if (datenbank.length() > 42 ) datenbank = datenbank.substring(1, 42);
        		   		boolean k = st.execute("UPDATE ANWENDUNG SET DBTYP = '"+datenbank+"' WHERE     SID  = '"+sid+"' ");
	        	 }
	        }else{
	            System.out.println("Kann keine Verbindung zur Datenbank herstellen !");
	        }
	    }
	 
	    public static Connection getOracleJDBCConnection(){
	 
	        try {
	            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	                    
	            for(Enumeration<Driver> e=DriverManager.getDrivers(); e.hasMoreElements(); )
	                System.out.println(e.nextElement().getClass().getName());
	                   
	        } catch(java.lang.ClassNotFoundException e) {
	            System.err.print("ClassNotFoundException: ");
	            System.err.println(e.getMessage());
	        
	    }try {
	           con = DriverManager.getConnection(url, userid, password);
	        } catch(SQLException ex) {
	            System.err.println("SQLException: " + ex.getMessage());
	        }
	 
	        return con;   
	    } 
	}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F UPDATE - Befehl nur in einer Zeile Datenbankprogrammierung 11
M Update Befehl Datenbankprogrammierung 1
J SQL Abfrage: Verschiedene Werte in einer Spalte mit einem Update Befehl? Datenbankprogrammierung 7
G Update-Befehl Fehlerhaft ?? Datenbankprogrammierung 2
G Update Befehl funkt nicht. WARUM? Datenbankprogrammierung 5
B [SQL] UPDATE oder REPLACE INTO Befehl Datenbankprogrammierung 10
T compiler fehler: should be mapped with insert="false" update="false" Datenbankprogrammierung 1
bueseb84 Spring Boot : Update Mysql Datenbank Datenbankprogrammierung 1
OnDemand Mysql UPDATE if condition Datenbankprogrammierung 14
OnDemand Select vs Update ins blaue, was ist teurer? Datenbankprogrammierung 11
OnDemand MySQL Trigger löst nicht aus bei Hibernate Update Datenbankprogrammierung 12
R HSQLDB ResultSet update aktualisiert DB, aber nicht das ResultSet Datenbankprogrammierung 2
L SQL-Statement INSERT INTO ON DUPLICATE KEY UPDATE funktioniert nicht Datenbankprogrammierung 5
M SQL-Statement SQL mit Java, Update Fehler Datenbankprogrammierung 1
OnDemand Update auf Mysql läuft nicht durch Datenbankprogrammierung 30
OnDemand SQL-Statement Update mit innerjoin Datenbankprogrammierung 18
OnDemand Update table SET will nicht Datenbankprogrammierung 9
P MySQL INSERT / UPDATE MySQL - perStoredProcedure oder direkt im Code Datenbankprogrammierung 3
S Update Tabelle aus Textfeld Datenbankprogrammierung 2
S JPA: update von Schlüsselwerten Datenbankprogrammierung 2
ruutaiokwu sql server werte swappen beim update-vorgang mit unique-constraints..? Datenbankprogrammierung 2
S MySQL Nach wiederholtem Update falsche Werte (im Speicher?) Datenbankprogrammierung 1
M SQL-Statement Datentypen in Kriterienausdruck unverdräglich bei Update auf DB von Java aus Datenbankprogrammierung 0
M SQL UPDATE richtig anwenden BITTE um HILFE Datenbankprogrammierung 3
M SQL UPDATE führt zu JAVA Absturz Datenbankprogrammierung 6
S HSQLDB Verbieten eines update auf eine bestimmte reihe Datenbankprogrammierung 4
M Derby/JavaDB Neu geschriebener Eintrag per UPDATE lässt sich nicht unmittelbar abrufen Datenbankprogrammierung 2
S UPDATE user Datenbankprogrammierung 4
R Fehler 2601 trotz SQL-UPDATE ? Datenbankprogrammierung 2
B DB Update via batch Datenbankprogrammierung 3
H Update ganze zeile Datenbankprogrammierung 4
R sqlite UPDATE wirkt nicht aus Java Datenbankprogrammierung 7
S ID Wert von Insert über jdbcTemplate.update Datenbankprogrammierung 3
D Error 1452: Cannot add or update a child row: a foreign key constraint fails Datenbankprogrammierung 15
D SQL Update auf eine Query möglich? Datenbankprogrammierung 4
5 Datenbank Update Datenbankprogrammierung 8
turmaline Oracle "Häppchenweises" Update durchführen Datenbankprogrammierung 4
C MySQL Problem mit UPDATE Abfrage Datenbankprogrammierung 13
D ArrayIndexOutOfBoundsException bei Update von JTable und Model Datenbankprogrammierung 13
M Access Update Statement Fehler update -> unmöglich? Datenbankprogrammierung 3
J MyBatis - Update Problem Datenbankprogrammierung 4
S JPA: Problem mit Update von Daten Datenbankprogrammierung 7
I Derby/JavaDB Update Fehler Datenbankprogrammierung 4
N Update Prepared Statement Fehler bei Argumenten Datenbankprogrammierung 3
N batch-Update wird nicht durchgeführt Datenbankprogrammierung 2
R MS Access mit Java Problem mit Update Statment Datenbankprogrammierung 13
1 On duplicate Key update Datenbankprogrammierung 3
M DB update geht einfach nicht Datenbankprogrammierung 2
F ResultSet kann Datenbank nicht update, warum? Datenbankprogrammierung 3
G MySQL Update Datenbankprogrammierung 5
M MySQL größere von zwei Zahlen in Update Statement Datenbankprogrammierung 2
T Update an SQL Tabelle ?! Datenbankprogrammierung 10
C MySQL Update funktioniert nicht Datenbankprogrammierung 11
C Update Table1 mit Relationship Table2 Datenbankprogrammierung 6
prakdi einzelnen SQL Eintrag finden der "update" enthält Datenbankprogrammierung 3
V Datenbank Update Datenbankprogrammierung 7
A update methode für datenbank Datenbankprogrammierung 2
M Hibernate: Insert statt Update Datenbankprogrammierung 8
E Update DB; Werte aus Feldern übernehmen Datenbankprogrammierung 5
H Batch Update/Insert Datenbankprogrammierung 4
E Insert oder Update- Prüfung Datenbankprogrammierung 3
H Datenbank Update Datenbankprogrammierung 3
cosmic Problem beim Update einer Oracle DB Datenbankprogrammierung 7
M Update mysql Fehler ?? Datenbankprogrammierung 4
T Problem beim Update in die Access DB Datenbankprogrammierung 9
R Update Time auslesen Datenbankprogrammierung 2
T DB2 delete/update über 2 Tabellen Datenbankprogrammierung 2
K Ist mein UPDATE fehlerhaft? Datenbankprogrammierung 3
S Update Problem Datenbankprogrammierung 3
M Insert Update usw. Datenbankprogrammierung 2
S CashedRowSet update - oder was mache ich falsch - Datenbankprogrammierung 6
S Update mit null Datenbankprogrammierung 11
H UPDATE . Datenbankprogrammierung 3
S PostgreSQL SELECT/UPDATE etc. Datenbankprogrammierung 4
T Update-Frage Datenbankprogrammierung 11
Y Hibernate - Update bestimmter Spalten Datenbankprogrammierung 2
G update sperren bei client/server anwendung Datenbankprogrammierung 7
T Diverse JDBC Probleme (inner join, rs.last(), update) Datenbankprogrammierung 2
B Update funktioniert nicht Datenbankprogrammierung 8
R Update und Insert Gleichzeitig? Datenbankprogrammierung 2
K MsAccess immer beim zweiten Update java.sql.SQLException Datenbankprogrammierung 28
N Hibernate & hsqldb: Problem bei db-update Datenbankprogrammierung 7
T Problem beim Update vom Resultset + Firebird Datenbankprogrammierung 2
G Update Statement automatisch unterteilen lassen Datenbankprogrammierung 3
G ist hieran was falsch ? UPDATE Anweisung Datenbankprogrammierung 8
W Hibernate Update Problem Datenbankprogrammierung 3
A Syntaxfehler bei update. Datenbankprogrammierung 8
O Update-Problem mit Hibernate-Framework Datenbankprogrammierung 5
L Problem mit Update Datenbankprogrammierung 14
L UPDATE löst Exception aus Datenbankprogrammierung 6
G Problem mit Datums-Format bei UPDATE Datenbankprogrammierung 3
F Update mit Prepared Statements Datenbankprogrammierung 10
B SQLite Befehl bauen? Datenbankprogrammierung 4
L INSERT INTO Befehl in Java Datenbankprogrammierung 8
M Finde einen eifachen Befehl nicht Datenbankprogrammierung 4
M MySQL Befehl formatieren in MySQL Datenbankprogrammierung 4
E Datentyp enum und tinytext in sql-Befehl Datenbankprogrammierung 5
E falscher Befehl executeQuery() issue data Datenbankprogrammierung 12
S SQL Befehl: "suchwort" egal wo Datenbankprogrammierung 4
A Oracle Unbekannter Fehler bei insert Befehl Datenbankprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben