Java und Textfile

Status
Nicht offen für weitere Antworten.

Freaky Lady

Mitglied
Lese mit einer Java-Klasse Daten aus einem .txt-File raus und zerlege es mit dem StringTokenizer, dann siehts so aus:
'1''Hans''Muster'
'2''Birgit''Muster'

Nun sollten diese daten zur DB geschickt werden und als Einträge speichern.

Das hab ich geschafft, ist aber noch nicht richtig und gibt das Resultat nur auf der Konsole aus...

package keywords;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.StringTokenizer;

import sun.beans.editors.StringEditor;

public class AusDateiLesen {
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException, SQLException {

// Die Klasse DBConnectionManager wird aufgerufen (DB-Anbindung)
Connection con = DBConnectionManager.createConnection();


File myFile = new File("C:/Dokumente und Einstellungen/Yvonne Rotzetter/Eigene Dateien/"
+ "Privat/Aufgabe/AufgabeJava/MeinFile.txt");

try {
BufferedReader in = new BufferedReader(new FileReader(myFile));
String str;
while ((str = in.readLine()) != null) {
processLine(str);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}

public static void processLine(String str){
StringTokenizer st = new StringTokenizer(str, ",");

StringBuffer sql = new StringBuffer("insert into Adresse (VORNAME, NACHNAME) values(");
while (st.hasMoreTokens()) {

String tok = st.nextToken();
sql.append(tok);
}
// jetzt ist SQL-String fertig und könnte ausgeführt werden.
System.out.println(sql.toString());
}
}

Und dies sieht auf der Konsole so aus:

insert into Adresse (VORNAME, NACHNAME) values('1''Hans''Muster'
insert into Adresse (VORNAME, NACHNAME) values(''2''Birgit''Muster'

Nun möchte ich nur die Vornamen und Nachnamen zur DB schicken, wie mach ich das ? Kann mir da jemand helfen ????
 

Leroy42

Top Contributor
Code:
insert into Adresse (VORNAME, NACHNAME) values('1''Hans''Muster'

Das ist auch keine gültige SQL-Anweisung.

Code:
insert into Adresse (VORNAME, NACHNAME) values('Hans', 'Muster')
Auch muß bei einer Insert-Anweisung natürlich die Anzahl der
formalen Parameter (VORNAME, NACHNAME) gleich der Anzahl der
aktuellen Parameter ('Hans', 'Muster')
 

Freaky Lady

Mitglied
@ Leroy

Ist mir bewusst das da noch ne Klammer hin muss, nur war mir nicht bewusst wie ich diese im Stream einbauen konnte... Naja, jedenfalls ists jetzt geschafft.

@ HLX

1. Sorry.
2. Problem hat sich erledigt, allerdings noch ne Frage...

Wie kann ich die Einträge im Textfile abfragen ob die Hochkommas da sind ?

if(...)
{
throws new Exception("Bitte fügen sie Hochkommas vor und hinter den Namen ein.");
}
 

Freaky Lady

Mitglied
Rest des Codes:

package keywords;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.StringTokenizer;

import sun.beans.editors.StringEditor;

public class AusDateiLesen {

public static void main(String[] args) throws Exception
{
File myFile = new File("C:/Dokumente und Einstellungen/Yvonne Rotzetter/Eigene Dateien/"
+ "Privat/Aufgabe/AufgabeJava/MeinFile.txt");

BufferedReader in = new BufferedReader(new FileReader(myFile));
String str;
while ((str = in.readLine()) != null)
{
processLine(str);
}
in.close();
}

public static void processLine(String str) throws Exception
{
StringTokenizer st = new StringTokenizer(str, ",");
if(st.countTokens()!=3)
{
throw new Exception("Zeile hat nicht genau 3 Teile ("+str+")");
}

String id = st.nextToken(); // Die ID brauchen wir gar nicht
String vn = st.nextToken();
String nn = st.nextToken();

if()
{
throw new Exception("Bitte vor und hinter den Namen Hochkommas einsetzen.");
}

if()
{
throw new Exception("Bitte vor den Namen Hochkommas einsetzen.");
}

if()
{
throw new Exception("Bitte hinter den Namen Hochkommas einsetzen.");
}

StringBuffer sqlBuffer = new StringBuffer("insert into Adressen (VORNAME, NACHNAME) values(");
sqlBuffer.append(vn);
sqlBuffer.append(",");
sqlBuffer.append(nn);
sqlBuffer.append(")");
// Jetzt ist der SQL fertig zusammengesetzt, wir machen einen 'final' und 'fixen' String daraus
String sql=sqlBuffer.toString();

System.out.println(sql);


Connection con = DriverManager.getConnection(url, username, password);

Statement stmt = con.createStatement();
int anzahlzeilengeaendert = stmt.executeUpdate(sql);
con.close();
}


}
 

Leroy42

Top Contributor
Freaky Lady hat gesagt.:
Wie kann ich die Einträge im Textfile abfragen ob die Hochkommas da sind ?

Die müssen, sollen und werden (voraussichtlich) gar nicht da sein.
Du mußt sie schon selbst einfügen:

Statt
Code:
StringBuffer sqlBuffer = new StringBuffer("insert into Adressen (VORNAME, NACHNAME) values("); 
sqlBuffer.append(vn); 
sqlBuffer.append(","); 
sqlBuffer.append(nn); 
sqlBuffer.append(")");
am einfachsten:
Code:
StringBuffer sqlBuffer = new StringBuffer("insert into Adressen (VORNAME, NACHNAME) values("); 
sqlBuffer
  .append("'").append(vn).append("', '")
  .append(nn).append("')");
 

Freaky Lady

Mitglied
Hmm, ist aber nicht meine Aufgabe. In dem Textfile muss man die Namen mit Hochkommas schreiben, ansonsten soll das Programm aufmerksam dararuf machen, dass man Hochkommas einfügen soll.

Mein Beispiel funktioniert leider noch nicht, aber immerhin n Anfang:
if(id != "''" || vn != "'"+vn+"'" || nn != "'"+nn+"'")
{
throw new Exception("Bitte fügen sie links und rechts von den Namen Hochkommas ein");
}

vn steht für Vorname, nn für Nachname... Gibt eine Fehlermeldung aus sobald man ein Hochkomma vergessen hat, die Fehlermeldung kommt aber auch, wenn alle Hochkommas da sind wo sie sollten...

Die Id wird nicht mitgegeben also da nur zwei Hochkommas.
 
S

SlaterB

Gast
was soll
vn != "'"+vn+"'" bedeuten?

für jeden String auf dieser Welt ist der String selber was anderes als der String mit zwei Hochkommata außen rum,
die Länge des String steigt dann ja um 2, wie soll der String dann noch derselbe sein?

String vergleicht man übrigens mit string.equals(otherstring),

du möchtest vielleicht testen ob der String mit Hochkommata anfängt und endet?
das solltest du auf jeden Fall in eine Operation auslagern:

Code:
if(id != "''" || !inHochKommata(vn) || !inHochKommata(nn)) 

public boolean inHochKommata(String st) {
  //..
  return false;
}

was kann diese Operation nun machen?
sie muss sich den ersten und letzten Buchstaben anschauen und testen, ob dies ein Hchkommata ist,
chars vergleicht man wieder mit ==,
du brauchst die String-Operationen length() und charAt()
und am besten noch abfangen, ob der übergebene String null ist oder weniger als zwei Zeichen enthält
 

puddah

Aktives Mitglied
Ich würde vorschlagen, dass du dir einen requlären Ausdruck baust mit dem du die eingelesene Zeile prüfst.
 

Freaky Lady

Mitglied
Hab ne Lösung gefunden:
if ((!id.startsWith("'")||!id.endsWith("'")) || (!vn.startsWith("'")||!vn.endsWith("'")) || (!nn.startsWith("'")||!nn.endsWith("'")))
{
throw new Exception("Bitte fügen sie links und rechts von den Namen Hochkommas ein, Zeilennummer:"+zeilenNummer);
}
 

HLX

Top Contributor
Gratulation! :)

...und der Anwender kriegt dann den Stacktrace um die Ohren gehauen... :autsch:

Tipp: wie SlaterB schon geschrieben hat - lager das doppeltdreifachStartsEndsWith in eine
separate Methode aus :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Java ServerFaces Anwendung mit XHTML & CSS Allgemeines EE 1
E modulare Java-Anwendung verteilen (Camel) Allgemeines EE 0
B Java Mail und idle() mit zig Emailadressen? Allgemeines EE 59
H JWebUnit Fehler: java.lang.NoClassDefFoundError: org/apache/regexp/RESyntaxException Allgemeines EE 24
B Java mail API - möchte nur eine gewisse Anzahl von Emails in die Liste holen Allgemeines EE 3
M Rest mit Java 11 Allgemeines EE 6
M java.lang.SecurityException: class "javax.persistence.TupleElement"'s signer information does not match ... Allgemeines EE 1
F Java Programmierer Allgemeines EE 13
R Wie viel DevOps sollte ein Java-Entwickler kennen, der sich in Microservices spezialisiert? Allgemeines EE 5
Dimax JSP Probleme mit Java in JSP Allgemeines EE 21
Dimax JSP Auf button click java methode ausführen.Ist das möglich? Allgemeines EE 6
B Logging (log4j) in JAVA EE application - WildFly Allgemeines EE 15
A Java EE (am Cleint) und websocket Allgemeines EE 8
J Ich kann Java JDK nicht downloaden Allgemeines EE 6
R Aufbau zum Java EE Entwickler - Schulungen Allgemeines EE 0
G Java EE Hosting ? Allgemeines EE 6
P Java EE Videotutorials Allgemeines EE 1
R Java Enterpise entwickeln mit Virtualbox Allgemeines EE 6
A OutOfMemoryError: Java heap space Allgemeines EE 7
I Start Word from Java Allgemeines EE 1
T Java Jersey Interceptor Allgemeines EE 7
R Post Variable in Java Allgemeines EE 8
L JSP Fehlermeldung bei Verwendung von Java-Expression-Language Allgemeines EE 8
K Wie habt ihr Java EE gelernt? Allgemeines EE 11
hjpsoft JSF Lösung einer Aufgabe im "Workshop Java EE7" Allgemeines EE 5
S Welcher Java EE Applikationserver für RESTful Webservice? Allgemeines EE 2
T Java Login Allgemeines EE 1
L Certified Master Java Enterprise Architect Java EE Allgemeines EE 3
R Java EE 6, eclipse, maven, jsf, hibernate, mysql Allgemeines EE 8
D Einfaches Java Projekt funktioniert nicht Allgemeines EE 3
W Authentifizierung und Sessions in Java EE7 Allgemeines EE 5
OnDemand Task in Java ee Allgemeines EE 7
OnDemand JSF - java File Verständnisfrage Allgemeines EE 5
OnDemand Deployen ohne .java Files Allgemeines EE 0
E Wie kann ich über einen Suchfeld in Java Server Pages nach Datenbankinhalten suchen? Allgemeines EE 11
V Java EE 7 CDI, annotations und beans Allgemeines EE 1
G Bachelorthesis: Java oder PHP (CMS) Allgemeines EE 7
X Konsolenausgabe einer java klasse in eine jsp umleiten Allgemeines EE 7
S Aufruf eines EJBs aus einer nativen Java-Applikation Allgemeines EE 1
T Fertiges html javascrip css template in java EE application Allgemeines EE 0
F Eclipse/Java EE Debug-Problem Allgemeines EE 1
D Java Projekt goes Webservice Allgemeines EE 6
L Button Handling in JSP mit Java-Backend Allgemeines EE 2
Shams Frage zu Dowload von JAVA SDK Allgemeines EE 5
T Größeres Java EE Beispiel Projekt Allgemeines EE 4
N JavaScript schickt und Java empfängt? Allgemeines EE 4
O Java EE in Netbeans + allgemeine Fragen Allgemeines EE 5
H java selenium spezis? Allgemeines EE 4
H java selenium test connection refused Allgemeines EE 6
M Java EE-Technologie-Lern-Wahl Allgemeines EE 5
B [EJB] javax.inject.DefinitionException: bean not a Java type Allgemeines EE 5
J Java Dependencies auslesen Allgemeines EE 19
2 installation java EE Allgemeines EE 12
J PHP oder Java? Allgemeines EE 12
L Webseiten Formulare über Java Oberfläche ausfüllen? Allgemeines EE 2
T Java CMS Entwicklung : Welcher Weg ist besser? Allgemeines EE 9
F Gesucht: Gratis Server für Java Entwickler Allgemeines EE 4
J Einstieg in Java EE Allgemeines EE 5
aze Eclipse Java EE Web Project:Wo liegen die Servlets ? Allgemeines EE 4
S java Entities Problem Allgemeines EE 19
D Grundüberlegung Java Webprojekt Allgemeines EE 10
F Einstieg in Java EE - Beispielanwendungen Allgemeines EE 52
R JAVA EE - eigene Klassen aus EJB übernehmen Allgemeines EE 2
T "normales" Java Programm auf einen Server laufen lassen Allgemeines EE 3
M EE6+EJB+JavaLib: Error in annotation processing: java.lang.NoClassDefFoundError Allgemeines EE 4
G java ResourceLocator Allgemeines EE 12
M Was ist mit Java möglich? Allgemeines EE 13
T Komponenten zusammenhänge Java EE Allgemeines EE 7
A Java CMS Allgemeines EE 2
P Architektur Java EE <-> HTML5 Allgemeines EE 3
A Java Tomcat findet Website nicht Allgemeines EE 8
F Java EE Server nutzung kostenlos an Schule? (zB. mit Glassfish) Allgemeines EE 6
B Java EE, kickstart my heart Allgemeines EE 10
P Frage zu Java EE Design Patterns Allgemeines EE 3
G EJB und Java EE - No Persistence provider Allgemeines EE 5
zilti Java EE Hosting, worauf muss ich achten? Allgemeines EE 5
M Java EE6: Wie Login-Vorgang durchführen? Allgemeines EE 2
MQue Java Web- Application -> MVC Allgemeines EE 4
G Java <-> Flex Allgemeines EE 2
Spin Ant - Java Beans umsetzen Allgemeines EE 4
V "null" durch NICHTS ersetzen jsp und java beans Allgemeines EE 3
M Serialisierung und Klonen in Java Allgemeines EE 5
W JAVA Optionen auslesen Allgemeines EE 3
D Spring 3 vs. Java EE 6 Allgemeines EE 33
MQue CMS in Verbindung mit Java Allgemeines EE 16
X3TitanCore Java Servertechnologie Allgemeines EE 7
C WebStart Fehler nach update auf Java 1.6 Allgemeines EE 2
R Variablen statt Java-Methoden in EL's Allgemeines EE 4
T Suche Buch für: Large Scale Web-Apps | Clustering | Scaling in Java ? Allgemeines EE 4
G Vergleich zwischen Java Spirng und Ruby on Rails Allgemeines EE 9
K EJB Enterprise Java Beans Allgemeines EE 32
F Ich will mit Java Internetseiten bauen, aber wo hosten? Allgemeines EE 14
J OOP Java Array Problem Allgemeines EE 2
T Problem mit Java Transaction API Allgemeines EE 2
D Java EE vs. Spring/Hibernate Allgemeines EE 26
R Java EE Anfänger will mehr. Allgemeines EE 7
A Fragen zum Einstieg in Java EE Allgemeines EE 11
M Evolution der Web-Entwicklung im Java-Bereich Allgemeines EE 15
N erstes Java EE Projekt - Server/ EJB-Verbindung-Anfängerfage Allgemeines EE 17
G Von Java SE nach JavaEE umsteigen Allgemeines EE 31

Ähnliche Java Themen

Neue Themen


Oben