ERLEDIGT
NEIN
NEIN
ANTWORTEN
11
11
ZUGRIFFE
2429
2429
EMPFEHLEN
-
hi an alle,
habe soeben dieses Programm geschrieben um ein Update auf meiner Datenbank zu erstellen jedoch werden die Werte dier erstellt werden irgendwie nicht gespeichert ... müsste ich dazu noch etwas ergänzen:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
package update; import java.sql.*; import oracle.jdbc.driver.*; import oracle.sql.*; class GetUpdate extends Object { public static void setGehalt(int manager_id, int salary) { try { DriverManager.registerDriver(new OracleDriver()); Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:xe", "hr", "fenerium"); String sqlUpdate = "UPDATE employees SET Salary = ? WHERE manager_id = ?"; PreparedStatement pstmt = conn.prepareStatement(sqlUpdate); pstmt.setInt(1, salary); pstmt.setInt(2, manager_id); pstmt.executeUpdate(); conn.close(); pstmt.close(); } catch (Exception e) { e.printStackTrace(); } } public static void main (String[] args) { setGehalt(7201, 100); } }
-
30.10.07 12:55 #2Tobias Köhler Tutorials.de Gastzugang
Also bei mir klappt es so:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
try { DriverManager.registerDriver(new OracleDriver()); Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "hr", "hr"); Statement stmt = conn.createStatement(); String sql = "UPDATE EMPLOYEES SET FIRST_NAME='Tobias' WHERE EMPLOYEE_ID=100"; stmt.execute(sql); logger.info("UPDATE durchgeführt"); sql = "SELECT * FROM EMPLOYEES ORDER BY EMPLOYEE_ID"; ResultSet rSet = stmt.executeQuery(sql); while (rSet.next()) logger.info("EMPLOYEE_ID: " + rSet.getInt("EMPLOYEE_ID") + " - " + rSet.getString("FIRST_NAME")); rSet.close(); stmt.close(); conn.close(); } catch(SQLException e) { logger.error("Konnte keine Verbindung herstellen.", e); }
-
bei mir klappt es jetzt auch hatte versehentlich manager_id und salary verwechselt.
bei deinem code wundert mich das:
das kenne ich gar nicht muss dazu etwas importieren vorher?Code :1
logger.info(".....")
-
30.10.07 13:27 #4Tobias Köhler Tutorials.de Gastzugang
Tut hier eigentlich nix zur Sache. Such mal nach Log4J, daher kommt das. Ersetzt letztendlich die System.out.println-Einträge. Somit kannst du später, wenn ein Programm "in Betrieb genommen wird" und ein Fehler auftritt, leichter debuggen, da du zB einfach nur den Writer änderst und die Konsolenausgaben auf eine Datei umleitest.
-
kannst du mal hier nachschauen was falsch ist wollte einen neuen Employee einfügen:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
import java.sql.*; import oracle.jdbc.driver.*; import oracle.sql.*; public class GetInsert { public static void main(String[] args) { try { DriverManager.registerDriver(new OracleDriver()); Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "hr", "fenerium"); Statement stmt = conn.createStatement(); //Hinzufügen eines neuen Arbeitnehmer /*(EMPLOYEE_ID, FIRST_NAME, LAST_NAME, " + "EMAIL, HIRE_DATE, JOB_ID, GEB_ID, DEPARTMENT_ID, SALARY)" + "PHONE_NUMBER, MANAGER_ID" + */ String insertQuery = "INSERT INTO employees VALUES" + "(211, 'Hans','Wurstl', 'wurst', '01.10.2007', " + "'AC_SPEZ','29.08.1985', 80, 7500, '06131/21212', 101)"; stmt.executeUpdate(insertQuery); System.out.println("INSERT durchgeführt"); insertQuery = "SELECT * FROM EMPLOYEES ORDER BY EMPLOYEE_ID"; ResultSet rSet = stmt.executeQuery(insertQuery); while (rSet.next()) System.out.println("MANAGER_ID: " + rSet.getInt("MANAGER_ID") + " - " + rSet.getString("SALARY") + " - " +rSet.getString("LAST_NAME")); rSet.close(); stmt.close(); conn.close(); } catch(SQLException e) { System.err.println("error messgae: " + e.getMessage()); e.printStackTrace(); Runtime.getRuntime().exit(1); } } }Geändert von fenerli23 (30.10.07 um 15:04 Uhr)
-
Hallo,
was passiert denn?
Hast du es schon mal mit?Code :1
connection.commit();
MFG
zEriXEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
30.10.07 14:04 #7Tobias Köhler Tutorials.de Gastzugang
Was genau wird denn für ein Fehler ausgegeben?
Ich finde eigenartig:
Employee ID = 211 -> Ist Employee ID nicht Primary Key und du musst den gar nicht setzen?
Email ist glaub ich unwichtig
JOB_ID: Muss das nicht eine Zahl sein?
-
diese geschieht:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
error messgae: ORA-00917: Komma fehlt java.sql.SQLException: ORA-00917: Komma fehlt 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 insert.GetInsert.main(GetInsert.java:28)
-
30.10.07 14:08 #9Tobias Köhler Tutorials.de Gastzugang
Woher kommt das "Komma fehlt"?
Seh ich nciht
-
ich auch nicht ich shcau mal jetzt nochmal gründlcih drüber mal schauen ob ich es finden werde...
-
den Kommafehler habe ich nun behoben jetzt kriege ich diese Fehlermeldung:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
error messgae: ORA-00947: Anzahl der Werte reicht nicht aus java.sql.SQLException: ORA-00947: Anzahl der Werte reicht nicht aus 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 insert.GetInsert.main(GetInsert.java:38)
so sieht die Tabelle aus:
CREATE TABLE "EMPLOYEES"
"EMPLOYEE_ID" NUMBER(6,0),
"FIRST_NAME" VARCHAR2(20),
"LAST_NAME" VARCHAR2(25) CONSTRAINT "EMP_LAST_NAME_NN" NOT NULL ENABLE,
"EMAIL" VARCHAR2(25) CONSTRAINT "EMP_EMAIL_NN" NOT NULL ENABLE,
"PHONE_NUMBER" VARCHAR2(20),
"HIRE_DATE" DATE CONSTRAINT "EMP_HIRE_DATE_NN" NOT NULL ENABLE,
"JOB_ID" VARCHAR2(10) CONSTRAINT "EMP_JOB_NN" NOT NULL ENABLE,
"SALARY" NUMBER(8,2),
"COMMISSION_PCT" NUMBER(2,2),
"MANAGER_ID" NUMBER(6,0),
"DEPARTMENT_ID" NUMBER(4,0),
"GEB_ID" DATEGeändert von fenerli23 (30.10.07 um 15:38 Uhr)
-
Ganz schlechter StilCode java:
1 2 3
String insertQuery = "INSERT INTO employees VALUES" + "(211, 'Hans','Wurstl', 'wurst', '01.10.2007', " + "'AC_SPEZ','29.08.1985', 80, 7500, '06131/21212', 101)";

Verwende bitte IMMER die Schreibweise 'insert into tabelle (spalte1, spalte2) values (value1, value2)'
Warum? Zum einen wird der Code lesbar (woeher weiß ich den sonst welcher Wert in welche Spalte geht, ohne mir nebenbei die Tabellendefinition anzuschauen.
Zuma anderen, könnte mal jemand auf die Idee kommen Spalten hinzuzufügen / entfernen.. An die Effekte die dann auftreten wag ich lieber nicht zu denken.
Noch ein Hinweis: gib immer expiziet das Format von Datumswerten an (to_data('datum', 'format'). Warum? Nun, die Software könnte mal auf eine Datenbank tereffen, wo die NLS Parameter anders eingestellt sind.
Mit Tip 1 sollte sich auch Dein Problem einkreisen lassen.
achja, noch ein Tipp:
Mach das close() der Statements und Connection im finally{} Block. Sonst bleiben Sessions in der DB offen, wenn doch mal nen Fehler Auftritt....Falls ich entgegen meiner Gewohnheiten mal einen hilfreichen Beitrag schreibe, freu ich mich über eine positive Bewertung.
Ähnliche Themen
-
Update-Befehl auf Oracle-Datenbank
Von kallkar im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 15.01.11, 14:40 -
Mit JDBC Zugriff auf lokale Oracle 10 Datenbank
Von danielandross im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 19.02.08, 08:49 -
SAP R/3 --> JDBC -->Oracle
Von danielandross im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 12.02.08, 15:26 -
Oracle JDBC Driver FAQ
Von Thomas Darimont im Forum JavaAntworten: 0Letzter Beitrag: 14.02.06, 13:17 -
VErbindung zu einer Oracle Datenbank via jdbc--> FEhlermeldung
Von lindin im Forum JavaAntworten: 1Letzter Beitrag: 16.09.04, 14:11





Zitieren

Login





