View Full Version : €-Zeichen wird nicht gespeichert
Hallo AS400-Gemeinde,
ich habe ein Problem beim Speichern des €-Zeichens(€) in die DB2/AS400 mit einem C#-Programm.
In einer Textbox wird das €-Zeichen eingegeben, beim Insert geht er auf eine Exeption. Es soll in einer Tabelle gespeichert werden, die über DDS angelegt worden ist(Feld hat 50 Stellen Alpha und ID des codierten Zeichesatzes ist 273).
Mit einem Delphi-Programm über ODBC funktioniert es!
Liegt es am CCID-Code der DB2-Tabelle, am Connectenstring oder am OLEDB-Treiber?
Wer kann hier weiterhelfen!
Das Problem ist wohl, dass das €-Zeichen in C# ein Unicode-Zeichen ist und beim Insert dann als ungültiges Zeichen erkannt wird.
Hier ist es erforderlich mit ParameterMarkern bzw. ParameterObjekten zu arbeiten. Dann wird die Codewandlung korrekt durchgeführt.
Delphi weiß wohl bei ODBC, dass der SQL in SBCS abgegeben werden muss und wandelt dann selber um.
In .NET ist aber alles Unicode.
Was heißt das konkret, bzw. was muß ich am C#-Programm ändern? :confused:
Du musst dem Commandobjekt in der Parameters-Auflistung entsprechende Paramter hinzufügen und den CommandText umschreiben.
Wie man das macht steht in der ADO.NET-Hilfe mit entsprechenden Beispielen. Für hier ist das zu lang.
andreaspr@aon.at
29-06-10, 06:43
Beispiele wie man sowas in c# machen kann gibt es hier (http://www.mycsharp.de/wbb2/board.php?boardid=29&daysprune=1000&sortfield=lastposttime&sortorder=DESC&page=j) genug.
Bei der CCSID 273 gibt es kein Euro-Zeichen. Da musst Du schon die 1141 verwenden.
Bevor Du Dein Programm änderst, solltest Du erst mal den richtigen Zeichensatz verwenden.
Gruß,
KM
@KM
Soweit kommt der schon nicht, er scheitert bereits bei dem SQL-Befehl selber bevor er erst ausgeführt wird.
Hallo Fuerchau,
oben genanntes Problem ist immer noch nicht gelöst.:confused:
Hast du dafür eine Lösung.
Wenn ja bitte mal melden: 0171/4233017
Danke Josi7
Ist doch ganz simpel:
Parameter werden entweder einfach per "?" oder in .NET auch mit @Name in den SQL eingebettet.
Per CreateParameter muss je "?" oder @Name ein Parameter an das Commandobjekt angehängt werden.
Zur Laufzeit kannst du dann die Parameter befüllen.
Steht aber alles im ADO.NET-Handbuch bzw. der Online-Hilfe.
andreaspr@aon.at
09-09-10, 10:59
... oder du schaust einfach in den Link den ich gepostet habe.