# Fehler bei Insert Anweisung obwohl getestet



## Waldi (4. Nov 2005)

Hallo Hallo

Ich hab da ein Problem.

Diesen SQL befehl hab ich getestet, direkt im Access Abfrageeditor.


```
INSERT INTO '?' ('?','?','?','?','?','?','?','?') SELECT '?','?','?','?','?','?','?','?';
```
 ohne Hochkommas und mit Werten statt den ? 

Wenn ich das jetzt so in Java übernehme und mit dem u.g. ausführen lasse, kommmt das da raus:


```
INFO: Verbindung zur Datenbank erfolgreich durchgefuehrt.
**************************************************************************
ERROR: Datenbankfehler: [Microsoft][ODBC Microsoft Access Driver] Syntaxfehler in Abfrage. Die Abfrage ist unvollständig.
--------------------------------------------------------------------------
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Syntaxfehler in Abfrage. Die Abfrage ist unvollständig.
	at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
	at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
	at sun.jdbc.odbc.JdbcOdbc.SQLPrepare(JdbcOdbc.java:4831)
	at sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement(JdbcOdbcConnection.java:475)
	at sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement(JdbcOdbcConnection.java:443)
	at FktAuftragAnlegen.fktAuftragAnlegen(FktAuftragAnlegen.java:20)
	at FktAuftragAnlegen.main(FktAuftragAnlegen.java:69)
**************************************************************************
```

wie kann das sein??

Das ist der Code der die Abfrage ausführt:


```
// Methode zum Aufbauen der Datenbankverbindung
	    	VerbAufb.FktVerbAufb();

	    	String query_str = "INSERT INTO '?' ('?','?','?','?','?','?','?','?') SELECT '?','?','?','?','?','?','?','?';";
	    	
	    	//"INSERT INTO ? ( ID, ANr, KNr, VPE, GewVPE, MaßeVPE, Bezeichnung ) SELECT 94, 'B2020', 'jhgdghj520', 30, 20, 30, 50;";
	    	
	    	// Statement erzeugen
	    	PreparedStatement my_stmt = VerbAufb.verbindung.prepareStatement(query_str);
	    	
	    	// Abfrage ausfuehren
	    	my_stmt.setString(1, "test");
	    	
	    	my_stmt.setString(2, "ID");
	    	my_stmt.setString(3, "ANr");
	    	my_stmt.setString(4, "KNr");
	    	my_stmt.setString(5, "ArtNr");
	    	my_stmt.setString(6, "VPE");
	    	my_stmt.setString(7, "GewVPE");
	    	my_stmt.setString(8, "MaßeVPE");
	    	my_stmt.setString(9, "Bezeichnung");
	    	
	    	my_stmt.setString(10, "95");
	    	my_stmt.setString(11, "1");
	    	my_stmt.setString(12, "1");
	    	my_stmt.setString(13, "1");
	    	my_stmt.setString(14, "1");
	    	my_stmt.setString(15, "1");
	    	my_stmt.setString(16, "1");
	    	my_stmt.setString(17, "2");
	    	
	    	my_stmt.executeUpdate();
```

Hoffe ihr könntmir sagen was da faul ist.


----------



## Bleiglanz (4. Nov 2005)

vor allem dass du zweimal quotest

einmal durch die ' ' die schon da sind

das andere mal vom preparedstatement ?

entstehen wird dabei ein ''doppelmoppelquote''


UND

den Tabellennamen bei INSERT INTO <table> und die Spaltennamen kannst du nicht vom preparedStatement eintragen lassen

UND

was soll das SELECT? warum nicht VALUES??


----------



## Waldi (4. Nov 2005)

Bleiglanz hat gesagt.:
			
		

> was soll das SELECT? warum nicht VALUES??


Ich hab die Abfrage im SQL Editor mit VALUES eingegeben. Als ich das ausgeführt hab und später wieder aufgerufen hab dann war das wie oben umgeschrieben.



			
				Bleiglanz hat gesagt.:
			
		

> den Tabellennamen bei INSERT INTO <table> und die Spaltennamen kannst du nicht vom preparedStatement eintragen lassen



OK das wusste ich nicht. Ich probier da dann ein anderen Weg



			
				Bleiglanz hat gesagt.:
			
		

> vor allem dass du zweimal quotest
> einmal durch die ' ' die schon da sind
> das andere mal vom preparedstatement ?
> entstehen wird dabei ein ''doppelmoppelquote''



OK dann mach ich mal die '' weg. Wobei ich das auch schon ohne ausprobiert hab und da dann mehr Fehler kamen. Kann ja aber auch an den anderen Fehlern gelegen haben.

P.S.: Wie mach ich ein Haken wenn das Problem gelöst ist??


----------



## Waldi (4. Nov 2005)

Bleiglanz hat gesagt.:
			
		

> was soll das SELECT? warum nicht VALUES??


Ich hab die Abfrage im SQL Editor mit VALUES eingegeben. Als ich das ausgeführt hab und später wieder aufgerufen hab dann war das wie oben umgeschrieben.



			
				Bleiglanz hat gesagt.:
			
		

> den Tabellennamen bei INSERT INTO <table> und die Spaltennamen kannst du nicht vom preparedStatement eintragen lassen



OK das wusste ich nicht. Ich probier da dann ein anderen Weg



			
				Bleiglanz hat gesagt.:
			
		

> vor allem dass du zweimal quotest
> einmal durch die ' ' die schon da sind
> das andere mal vom preparedstatement ?
> entstehen wird dabei ein ''doppelmoppelquote''



OK dann mach ich mal die '' weg. Wobei ich das auch schon ohne ausprobiert hab und da dann mehr Fehler kamen. Kann ja aber auch an den anderen Fehlern gelegen haben.

P.S.: Wie mach ich ein Haken wenn das Problem gelöst ist??


----------

