Announcement

Collapse
No announcement yet.

Insert, update, Select Tschechische Schriftzeichen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Insert, update, Select Tschechische Schriftzeichen

    Hi,

    ich habe Tschechische Schrift
    und wollte die in der DB2-Datenbank speichern

    ich nutze folgende Convertierung im UPDATE um den Text mit tschechischen Schriftzeichen zu speichern:


    UPDATE TABLE SET LANG = 'CZE', CODE = 'APR001',
    TITL = CAST(CAST('požadováno ' AS VARCHAR(100) CCSID 870) AS VARCHAR(100) CCSID 65535)



    1. Frage(n)
    Wenn ich mir nun die Datenbank einträge anschaue, sehe ich bei den Sonderzeichen nur hieroglyphen.
    Ist das richtig?
    Also ein einfacher select * from table funtioniert nicht?



    2. Frage
    Muss ich immer SELECT auch wieder zurück covertieren?
    zum Beispiel so:


    SELECT CAST(CAST(TITL AS VARCHAR(100) CCSID 870) AS VARCHAR(100) CCSID 65535) as sTITL
    FROM TABLE WHERE LANG = 'CZE' AND CODE = 'APR001'



    3. Frage
    Aber leider funktioniert der ganze Weg bei mir nicht...
    Mein Ergebnis nach dem SELECT oder auch in der DB sieht ungefähr so aus: "poadovᆪno"

    Was mache ich falsch?



    Danke und Gruß
    Rayman

  • #2
    Wie bei jedem DBMS ist es anzuraten parametrisierte Abfragen zu verwenden. Ansonsten könnt es (neben den Sicherheitsproblemen) sehr leicht Probleme mit Sonderzeichen geben kann.

    Comment


    • #3
      wie soll ich die parametrisierte Abfrage interpretieren?
      etwa so?



      Code:
                  string strSQL = "INSERT INTO TABLE (TEXTSPALTE) VALUES (@Textspalte)";
      
                  cmd = new SqlCommand(strSQL, con);
      
                  cmd.Parameters.Add("@Textspalte", SqlDbType.VarChar, 100);
      
                  cmd.Parameters["@Textspalte"].Value = 'požadováno';
      
                  cmd.ExecuteNonQuery();
      kann ich denn keinen SQL Befehl direkt absetzen?

      Comment


      • #4
        Originally posted by Rayman View Post
        wie soll ich die parametrisierte Abfrage interpretieren?
        etwa so?
        Ja.

        Originally posted by Rayman View Post
        kann ich denn keinen SQL Befehl direkt absetzen?
        Möglich ist es schon, du wirst aber spätestens bei einer Sicherheitüberprüfung deiner Lösung wegen SQL Injection gewaltige Probleme bekommen.

        Comment


        • #5
          ja, SQL-Injection sind die eine (wichtige) Sache...


          aber meine Frage war,
          warum kann ich die tschechischen Zeichen nicht speichern?

          Werden in der DB-Tabelle die Sonderzeichen abgelegt? oder ein codiertes zeichen?

          Also, muss ich beim SELECT auch den CCSID Code verwenden?
          oder kann ich dann einfach selectieren?

          Comment


          • #6
            Originally posted by Rayman View Post
            aber meine Frage war,
            warum kann ich die tschechischen Zeichen nicht speichern?
            Weil bei direkter Angabe von Sonderzeichen im SQL String die DBMS-Parser teilweise mißt machen. Beim MS SQL-Server hilft teilweise die Anfgabe von N vor dem String (.... N'požadováno' ...)

            Comment


            • #7
              übrigens, hab ich nun raus was falsch war,
              der zweite CAST AS VARCHAR(100) CCSID 65535) war zuviel:
              CAST(CAST('požadováno ' AS VARCHAR(100) CCSID 870) AS VARCHAR(100) CCSID 65535)


              mache ich es beim INSERT, UPDATE & SELECT einfach so
              CAST('požadováno ' AS VARCHAR(100) CCSID 870)


              dann funzt es

              Comment

              Working...
              X