# Problem bei Insert mit JDBC auf MS-SQL-Server 2005



## Weegel (23. Jul 2009)

Folgendes Problem: 

bei einem Insert über folgenden Code kackt er mir ab, bzw. bringt unten angehängte Exception. Auf das Voranstellen von "dbo." an den Tabellen-Namen ztab klappt nicht. Das Insert wird richtig(!) erzeugt, das habe ich selbst auf dem SQL-Server getestet. Es scheint hier also entweder am JDBC Treiber (verwende den von MS) oder an den Rechten der DB zu liegen. Wie bekomme ich Zweifel die Rechte umgestellt? ICh bin mit dem User sa auf der Datenbank connected. 

Was mich wundert: Abfragen (SELECT) funktionieren wunderbar (auf der gleichen DB)!

Anm: toAttList und toValList sind Objekte vom Typ Method und deren aufruf wandelt lediglich Daten in einen für das Statement verwendbaren String um.

```
Statement ins = dba.getStmt();
StringBuffer sqlInsert = 
	new StringBuffer("insert into " + ztab + " (");
sqlInsert
	.append(toAttList.invoke(o, new Object[0]) + ") values (");
sqlInsert
	.append(toValList.invoke(o, new Object[0]) + ")");
ins.executeUpdate(sqlInsert.toString());
```


```
com.microsoft.sqlserver.jdbc.SQLServerException: Ungültiger Objektname 'myTab'.
	at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source)
	at com.microsoft.sqlserver.jdbc.IOBuffer.processPackets(Unknown Source)
	at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(Unknown Source)
	at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(Unknown Source)
	at com.microsoft.sqlserver.jdbc.SQLServerStatement$StatementExecutionRequest.executeStatement(Unknown Source)
	at com.microsoft.sqlserver.jdbc.CancelableRequest.execute(Unknown Source)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeRequest(Unknown Source)
	at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeUpdate(Unknown Source)
	at DBConverter.execute(DBConverter.java:143)
	at DBConverter.main(DBConverter.java:265)
```


----------



## sparrow (23. Jul 2009)

Lass dir und uns doch bitte ausgeben was sqlInsert tatsächlich enhält bevor du den Execute anschmeißt.


----------



## Weegel (23. Jul 2009)

Hier der SQL-Insert:

insert into d100 (dataen,dispo_ztr,fi_nr,identnr,saison_mod,useraen,userneu,var,vorhverbr,werk,prog_modell,per_anzahl,lgnr,datneu,anlauf_dat,aendnr,gew_mod,gl_faktor,kn_ausreisser,per_einheit,tatsverbr,dispo_dat,expo_dat,per_dat,expo1verbr,expo2verbr) 
values 
(CAST('01.01.2009' AS datetime),0,1,'010023.00-03','','baeurer','baeurer','',0.0,1,'',12,0,CAST('01.01.2009' AS datetime),CAST('01.01.2003' AS datetime),0,'',0.0,'1','2',0.0,CAST('01.01.2003' AS datetime),CAST('01.01.2003' AS datetime),CAST('01.01.2003' AS datetime),0.0,0.0)

wie gesagt, auch das gleiche Statement mit dbo.d100 bringt das selbe ergebnis - Zeilenumbrüche habe ich hier der Lesbarkeit halber eingebaut


----------



## sparrow (23. Jul 2009)

Das scheint aber ein anderer SQL-Befehl zu sein, deine Fehlermeldung meckert über das Objekt "myTab", das taucht in deinem SQL-Befehl aber nicht auf.


----------



## Weegel (23. Jul 2009)

sparrow hat gesagt.:


> Das scheint aber ein anderer SQL-Befehl zu sein, deine Fehlermeldung meckert über das Objekt "myTab", das taucht in deinem SQL-Befehl aber nicht auf.



Ja, das habe ich editiert, ersetze myTab durch d100, und alles stimmt


----------



## sparrow (23. Jul 2009)

Und wenn du an der Stelle einen Select ausführst?


----------



## Weegel (23. Jul 2009)

sparrow hat gesagt.:


> Und wenn du an der Stelle einen Select ausführst?



Gleicher Fehler!


----------



## Weegel (23. Jul 2009)

Weegel hat gesagt.:


> Gleicher Fehler!



Fehler gefunden, die Connection zeigte auf die falsche Datenbank! Danke! Der Select war der notwendige Tip! Kann zu!


----------

