# Mal ne Frage an die Experten



## Clip (13. Jul 2006)

Hallo!

Ich habe einen Sybase Server 12.5.

Ich habe zwei Programme. Eines nutzt den nativen Sybase Client zum Verbinden an die DB, das andere JDBC.
Beide Programme ermöglichen es mir SQL Befehle in der Komsole zu tippen und auszuführen.

Tippe ich:


> "print "hallo"



bekomme ich beim JDBC Programm vom Server: 


> Incorrect syntax near '"hallo"'



Vom Programm mit nativen Client:


> hallo



Komisch ist das ganze, weil der Fehler vom Server kommt, und beide Programme den gleichen String zur DB schicken.
Ich habe mal einen TCP Sniffer angeschmissen:
*Nativ:*
Query:


> 0000   00 03 47 3b 91 82 00 0c f1 b6 80 1a 08 00 45 00  ..G;..........E.
> 0010   00 45 00 26 40 00 80 06 5b 39 c2 6f 0d 57 c2 6f  .E.&@...[9.o.W.o
> 0020   0d 1e 05 e9 13 88 34 2f 6c 0b 78 5d 19 bf 50 18  ......4/l.x]..P.
> 0030   ff 57 34 be 00 00 0f 01 00 1d 00 00 00 00 21 10  .W4...........!.
> ...


Antwort:


> 0000   00 0c f1 b6 80 1a 00 03 47 3b 91 82 08 00 45 00  ........G;....E.
> 0010   00 5b 68 46 40 00 80 06 f3 02 c2 6f 0d 1e c2 6f  .[hF@......o...o
> 0020   0d 57 13 88 05 e9 78 5d 19 f2 34 2f 6c 45 50 18  .W....x]..4/lEP.
> 0030   41 d5 28 15 00 00 04 01 00 33 00 00 00 00 e5 1f  A.(......3......
> ...



*Java:*


> 0000   00 03 47 3b 91 82 00 0c f1 b6 80 1a 08 00 45 00  ..G;..........E.
> 0010   00 45 00 6a 40 00 80 06 5a f5 c2 6f 0d 57 c2 6f  .E.j@...Z..o.W.o
> 0020   0d 1e 05 ea 13 88 dd cc 10 e0 f2 fc 4d c6 50 18  ............M.P.
> 0030   fa 6e 22 87 00 00 0f 01 00 1d 00 00 00 00 21 00  .n"...........!.
> ...


Antwort:


> 0000   00 0c f1 b6 80 1a 00 03 47 3b 91 82 08 00 45 00  ........G;....E.
> 0010   00 7c 62 e5 40 00 80 06 f8 42 c2 6f 0d 1e c2 6f  .|b.@....B.o...o
> 0020   0d 57 13 88 05 ea f2 fc 4d c6 dd cc 10 fd 50 18  .W......M.....P.
> 0030   41 24 fc 19 00 00 04 01 00 54 00 00 00 00 e5 00  A$.......T......
> ...




Es ist doch sehr komisch, dass beide Clients den gleichen String an den Server schicken, aber unterschiedliche Antworten bekommen!
Hat jemand eine Idee wie das sein kann?


----------



## L-ectron-X (15. Jul 2006)

Ich kann da jetzt nur mutmaßen, bin ja auch kein JDBC-Experte... :wink: 
Wahrscheinlich musst du die Anführungszeichen "escapen".


----------



## Caffè Latte (16. Jul 2006)

Hi,

wie immer in SQL schreibt man Zeichenketten in einfache Hochkommas ('); versuche es also mal mit


```
print 'Hallo'
```


Wobei ich PRINT fast nie nutze, weil das selten implementiert ist.


----------



## Clip (17. Jul 2006)

Hallo und Danke für die Antwort.
Komisch ist doch, dass es mit einem Programm geht, und mit einem anderen nicht. Die TCP-IP Tracefiles zeigen ja, dass der Inhalt der zur DB geschickt wird identisch ist. Klar kann ich einfach die Hochkommata verändern oder Escapen etc. Aber Warum soch die DB bei einem JDBC Client  anders verhält als bei einem nativen Sybase Client bleibt ein Rätsel.
Ich vermite mal das irgendein Flag gesetzt wurde das ich bei JDBC händisch setzen müsste, dies aber aus unwissenheit nicht kann.


----------



## Murray (17. Jul 2006)

Identisch sind die Requests nicht ganz; sieh dir mal die Stellen 0x0042, 0x0051 und 0x0052 an.


----------

