werte für Datenbank über console eingeben

belluslupus

Grünschnabel
Bitte brauche eure Hilfe

Habe ein Oracle Db mit der ich verbunden bin. Ich kann mit direkten Werten in die Db schreiben. Jedoch wenn ich den Wert per console eingebe, bekomme ich eine Fehlermeldung:(.
Beispiel:orstat.executeUpdate("insert into KMPreis values(1,'10.1.2000','10.10.2000',0.6)");
diese eingabe passt. Wenn ich jedoch 1 durch eine Variabel ersetze dann bekomm ich eine Fehlermeldung.
Wie kann ich dieses Problem lösen?

Danke für deine Hilfe!
 
wie lautet die Fehler meldung?

Ich rate mal ins blaue, der Typ der Variable passt nicht mit den Typ den die DB erwartet ;)
 
ind der db ist der datentyp number(3) und in java int. müsste doch zusammenpassen?
es funktioniert auch nicht mit einem String.
 
Zuletzt bearbeitet:
Am einfachsten wäre es, wenn du die Fehlermeldung posten würdest, das würde ne Menge Rätsel-Arbeit ersparen.
Optimal wäre noch, wenn vorhanden, ein Log mit dem SQL-Statement, das abgeschickt wurde.
 
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:207)
at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:946)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1169)
at oracle.jdbc.driver.OracleStatement.executeUpdateInternal(OracleStatement.java:1615)
at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:1580)
at Verbindung.Verbindung.lesen(Verbindung.java:36)
at Verbindung.BeginnZugriff.main(BeginnZugriff.java:13)

Die Fehlermeldung(en)

orstat.executeUpdate("insert into kmpreis values(id,'1.1.2000,'31.12.2000,0.4)"); so geht es nicht
orstat.executeUpdate("insert into kmpreis values(1,'1.1.2000,'31.12.2000,0.4)");so geht es
 
Das liegt daran, dass du den Variablennamen in den String reinschreibst, also als Text, es muss so aussehen:

Java:
orstat.executeUpdate("insert into kmpreis values("+id+",'1.1.2000,'31.12.2000,0.4)")

Gruß
Matt
 
Leider nein habe ich schon versucht
Ergebniss:

Exception in thread "main" java.sql.SQLException: ORA-00933: SQL-Befehl wurde nicht korrekt beendet

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:207)
at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:946)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1169)
at oracle.jdbc.driver.OracleStatement.executeUpdateInternal(OracleStatement.java:1615)
at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:1580)
at Verbindung.Verbindung.lesen(Verbindung.java:39)
at Verbindung.BeginnZugriff.main(BeginnZugriff.java:13)


auch ein einfaches ' geht nicht, sowie jegliche Verkettung habe ich bereits versucht (ohne Erfolg).

lg belluslupus

Kann es sein dass die Connection nicht stimmt?

public static OracleConnection newConnection() throws Exception {
OracleDataSource zugriff= new OracleDataSource();
zugriff.setURL("jdbc:oracle:thin:@localhost:1521:xe");
zugriff.setUser("bus");
zugriff.setPassword("busreservierung");
return (OracleConnection) zugriff.getConnection();

}
 
Zuletzt bearbeitet:
Das liegt daran, dass du den Variablennamen in den String reinschreibst, also als Text, es muss so aussehen:

Java:
orstat.executeUpdate("insert into kmpreis values("+id+",'1.1.2000,'31.12.2000,0.4)")

Gruß
Matt

ich hasse es solche strings in java zubauen und zur db zu senden :D
der befehlt von Matt297 ist fastrichtig, auf jeden fall besser als das was belluslupus gemacht hat ;)

ich würde die ' noch mals überprüfen entweder müsste jeder wert diese davor und danach bekommen

also

Java:
orstat.executeUpdate("insert into kmpreis values('"+id+"','1.1.2000','31.12.2000','0.4')")

ich habe auch schon stunden davorverbracht diese miesen ' richtig zu setzen :(

alternativ würde ich dir eine DB Api wie Hibernate empfehlen, diese macht es java typischer db befehle zuerzeugen ohne sich mit string befehlen rum schlagen zu müssen.
 
Zurück