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 = "jdbcracle:thinxxx: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;
}
}
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 = "jdbcracle:thinxxx: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;
}
}