# Hilfe mit Umlauten und MSSQL



## [RTB]H3r0 (10. Mrz 2005)

das ist mal eine aussagekräftige Topic.

HAllo The_29  

Danke für die ProfileString geschichte...
und für den link zur jdbc:MSSQL:Treiber

Ich habe KEINE Desktopengine des SQL-Servers, sonder bin nur online auf einen geschaltet.

Noch bin ich bei so einfachen aufgaben, wie ein paar selects schicken, und die results auswerten.
aber schon jetzt bin ich scheinbar an eine Grenze gestoßen.
Wenn ich Umlaute in einer SQL schicke (ColName=Vorgänger)
werden genau diese nicht korrekt interpretiert.
wenn ich mir den SQL text in einer WINMessageBox anzeigen lasse, sehe ich, das die Umlaute verstümmelt sind.
Daher schließe ich darauf, das das am Betriebssystem leigt.
BITT!!!!
ich will nicht schonwieder ne dll schreiben, um Strings vernünftig umzu wandeln.
(ich kann mich erinnern da mal was drüber gelesen zu habne... war das hier bei euch??)

ICH HÄTTE GESUCHT!!!!!!!
ABER SUCHE WAR DISABLED!!! (irgendwelche SQl-Fehler.... *ironie)

thx.


----------



## Bleiglanz (10. Mrz 2005)

> ColName=Vorgänger


soll das heissen, es gibt eine SPALTE in einer Tabelle der DAtenbank mit dem Namen "Vorgänger"?

Weiss doch jedes Kind, dass man beim SQL-Server dann [Vorgänger] schreiben muss

wenn nicht, dann musst du ggf. das Encoding des JDBC Treibers auf das von der DB verwendete Abstimmen, sollte in der Doku zum Treiber zu finden sein.


----------



## thE_29 (10. Mrz 2005)

Gegebenenfalls die Redmonder (MS) kontaktieren, da es ja ein offi. Treiber von ihnen ist!

Aussedem solte man sich an die Namenskonventionen halten, also keine Sonderzeichen in Spalten/Tabllennamen!!

Wie gibt ein Ami ein ä ein


----------



## Bleiglanz (10. Mrz 2005)

Treffen sich zwei Datenbankentwickler

"Mensch bin ich froh und hab ich schon viele tolle Vorteile davon gehabt, dass ich immer Äs Ös und Üs in meinen Tabellen und Spaltennamen verwende"


----------



## [RTB]H3r0 (11. Mrz 2005)

Bleiglanz hat gesagt.:
			
		

> Weiss doch jedes Kind, dass man beim SQL-Server dann [Vorgänger] schreiben muss


du wirst es nicht glauben. aber DAS hab ich auch schon raus..... [...]
da steht auch 'HILFE ZU UMLAUTEN'
und nicht hilfe mit spaltennamen....

mann seind ihr stulle...(the_29 ausgenommen)
jetzt ma ehrlich.
wen der DB-Admin in meiner firma die splate vorgänger nennt, dann bast.
da gibts nichts zu nörgeln.
das Problem leigt (wie gesagt) eher darin,
das umlaute zwischen VM und Betriebssystem njicht korrekt übergeben werden.

das liegt wohl daran, das UNICOD (java) genau doppelt so viele bytes wie ASCII hat. windows behandelt dieses 'Sonderzeichen'
scheinbar wie 2 zeichen. (er gibt anstelle des ä  Ä■ aus.)
auch in der SQL. und diese Abfrage kann dann kein ergebnis haben.

in der hilfe zum DBTreiber steht nichts dazu.
leider.


----------



## [RTB]H3r0 (11. Mrz 2005)

es gibt da eine function 
String nativeSQL(String) 
aber auch die klappt nicht.


----------



## Bleiglanz (11. Mrz 2005)

>>da gibts nichts zu nörgeln.

doch!

>>das Problem leigt (wie gesagt) eher darin,
>>das umlaute zwischen VM und Betriebssystem 
>>nicht korrekt übergeben werden. 

Hä? Was? Wovon redest du?
hab doch oben schon gesagt, du sollst in die Doku schauen:

SendStringParameters AsUnicode SendStringParametersAsUnicode={true | false}. Determines whether string parameters are sent to the SQL Server database in Unicode or in the default character encoding of the database. True means that string parameters are sent to SQL Server in Unicode. False means that they are sent in the default encoding, which can improve performance because the server does not need to convert Unicode characters to the default encoding. You should, however, use default encoding only if the parameter string data that you specify is consistent with the default encoding of the database. The default is true.


----------



## Bleiglanz (11. Mrz 2005)

> wenn ich mir den SQL text in einer WINMessageBox anzeigen lasse, sehe ich, das die Umlaute verstümmelt sind.
> Daher schließe ich darauf, das das am Betriebssystem leigt.


oder dass eben die WINMessageBox nicht alles richtig anzeigt, ansonsten aber alles OK ist


----------



## [RTB]H3r0 (15. Mrz 2005)

Bleiglanz hat gesagt.:
			
		

> > wenn ich mir den SQL text in einer WINMessageBox anzeigen lasse, sehe ich, das die Umlaute verstümmelt sind.
> > Daher schließe ich darauf, das das am Betriebssystem leigt.
> 
> 
> oder dass eben die WINMessageBox nicht alles richtig anzeigt, ansonsten aber alles OK ist



...
Die MessageBox in meinem Fall ruft die winAPIFunktion MessageBoxEx(...) auf.
dafür habe ioch mit dem jni.h eine eigene dll erstellt, die zum anzeigen des Textes NUR windowsFunktionen nutzt, den String aber von Java übergeben bekommt. 
und dieser String lässt sich nicht 100% korrekt auflösen.
weder von der messageBox, noch vom DriverManager um die nativeSQL zu erstellen.
das ergebniss der frage ist dann null.
ändere ich spaltenname und abfrage so, das keine umlaute mehr da sind, klappt alles wieder.


----------



## [RTB]H3r0 (15. Mrz 2005)

Bleiglanz hat gesagt.:
			
		

> SendStringParameters AsUnicode SendStringParametersAsUnicode={true | false}. Determines whether string parameters are sent to the SQL Server database in Unicode or in the default character encoding of the database. True means that string parameters are sent to SQL Server in Unicode. False means that they are sent in the default encoding, which can improve performance because the server does not need to convert Unicode characters to the default encoding. You should, however, use default encoding only if the parameter string data that you specify is consistent with the default encoding of the database. The default is true.


und das ist ne property von WELCHER classe??


----------



## Bleiglanz (15. Mrz 2005)

von gar keiner, war eine kleine übungsaufgabe für dich

=> ist ein teil des Strings "url", der beim jdbc getConnection verwendet wird


----------

