Update auf Oracle Datenbank mit JDBC

den Kommafehler habe ich nun behoben jetzt kriege ich diese Fehlermeldung:

Code:
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" DATE
 
Zuletzt bearbeitet:
Java:
String insertQuery = "INSERT INTO employees VALUES" +
					"(211, 'Hans','Wurstl', 'wurst', '01.10.2007', " +
					"'AC_SPEZ','29.08.1985', 80, 7500, '06131/21212', 101)";
Ganz schlechter Stil ;)

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....
 
Zurück