ORA-00911: invalid character . Hilfe!

Status
Nicht offen für weitere Antworten.

metaltiffy

Mitglied
Ich habe schon seit Tagen ein Problem...
Ich kriege beim durchführen immer die Meldung ORA-00911: invalid character...

Wenn ich aber den String, den ich verwende, mir ausgeben lasse und direkt in den SQL-Navigator kopiere, läuft alles..


Code:
	public void speichern(){
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			cn = DriverManager.getConnection(URL,USER, PASSWD);	
			cn.setAutoCommit(true);
		    System.out.println("getfile"+file);
		    file = "C:/Dokumente und Einstellungen/scwep01/Eigene Dateien/Eigene Bilder/mini-fin.bmp";
			if (file == null){
				labmeld.setText("kein Bild ausgewählt");
			}
			else {
		    fis     = new FileInputStream(file);
		    st = cn.createStatement();
		    String herst = t_herst.getText();
		    int jahr = Integer.parseInt(t_jahr.getText());
		    int vork = Integer.parseInt(t_preisvork.getText());
		    int nachk = Integer.parseInt(t_preisnachk.getText());
		    double price = vork + (nachk/100);
		    DecimalFormat df= new DecimalFormat("#0.00"); 
		    df.format(price);
		    System.out.println("preis "+price);
		    String string = "INSERT INTO Datentraeger " 
		        + "(Hersteller, Preis, E_Jahr,TYP_ID ) "
		        + "VALUES "
		        + "('" + herst   + "',"
		        + "'" + vork + "',"
		        + "'" + jahr + "',"
		        + "'" + datdefi + "');";
//		    rs = st.executeQuery(string);
		    System.out.println(string);
		    int rs = st.executeUpdate(string);
		    
		    System.out.println("rs = " +rs);

			}
		} catch (Exception ex) {
			System.out.println(ex);
			ex.printStackTrace();
		} finally {
			try {
				if (null != fis) fis.close(); } catch (Exception ex) {
			}
			try {
				if (null != pst)	pst.close();	} catch (Exception ex) {
			}
		}// ende finally
	}

Ich weiß echt nicht voran es liegt, vermutlich seh ich den Wald vor laute Bäumen nicht...

Noch zur Info:
die Felder sind alle Number in der Datenbank, außer Hersteller, das is Varchar2...
Außerdem hab ich noch einen Trigger mit einer Sequenz auf der Tabelle, die den Primarykey dat_id ausfühlt..
Vielleicht liegts ja daran, obwohl die Fehlermeldung dann anders aussähe...
 

The_S

Top Contributor
Naja, wenn du 'Wert' machst, übergibst du einen String. Übergebe nur Wert ohne Hochkommata, dann hast du eine Number.
 

metaltiffy

Mitglied
Ich hab das ja mit den Hochkommas in SQL kopiert..
da hat das gefunzt...

hab die grade mal weggemacht zum testen..
kommt aber immernoch der gleiche Fehler...
 

The_S

Top Contributor
Hersteller muss natürlich weiterhin in hochkommata bleiben ...

Ansonsten: Welche Werte übergibst du denn genau?
 

metaltiffy

Mitglied
Hab ich ja auch so gelassen...
So doof bin ich auch nicht... nur ein bisschen..
Das ist der String der dem executeupdate übergeben wird

INSERT INTO Datentraeger (Hersteller, Preis, E_Jahr,TYP_ID ) VALUES ('Test',22,2007,2);
 

metaltiffy

Mitglied
Ich hatte das schon mehrfach ausprobiert....
Habs jetzt nochmal entfernt...
Und jetzt funktionierts....
Sonst kam immer sowas wie did not properly end...
Warum auch immer das jetzt funktioniert (Vorführeffekt.)

Vielen Dank für die Hilfe...
*Tagessoll erfüllt* ^^
 

The_S

Top Contributor
Ich denke mal, der Fehler bei deinem 1. Test ist daraus reslutiert, dass du (wie von mir angemerkt) immer Strings übergibst, egal ob es sich um eine Number handelt oder nicht.

Nur so ne blöde Frage, Google kennst du? Wenn du nach deiner Fehlermeldung googlest (einfach 1 zu 1 kopiert), dann ist dieser Thread hier der erste Treffer, und dort wird genau dein Problem gelöst :roll:
 

metaltiffy

Mitglied
JA Google kenne ich, hab den Thread auch gefunden..
aber wie gesagt, hatte das mit dem Semikolon zuerst nicht geklappt....
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben