Announcement

Collapse
No announcement yet.

Unterschiede zwischen .Net 1.1 und 2.0 bzgl. der Stringdarstellung ?

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

  • Unterschiede zwischen .Net 1.1 und 2.0 bzgl. der Stringdarstellung ?

    Hallo,

    ich habe ein Problem mit dem Auführen einer Stored Proc in SqlServer 2000.

    Die SP ist folgendermassen definiert:

    CREATE PROCEDURE dbo.dt_getdynphdata @param VARCHAR(8000), @useId INT AS

    SET NOCOUNT ON
    ....

    Wenn ich im Query Analyzer die SP ausführe, dann funktioniert alles, ebenso aus meinem Programm heraus, welches in .NET 1.1 geschrieben ist.

    Jetzt habe ich den Code mit VSS2005 geöffnet und nach .NET 2.0 konvertiert und jetzt bekomme ich beim
    Ausführen der SP aus dem Code heraus folgende Fehlermeldung:

    "Die implizite Konvertierung von Datentyp ntext in varchar ist nicht zulässig. Verwenden Sie die CONVERT-Funktion, um diese Abfrage auszuführen."

    Ich habe jetzt schon ein wenig heraus gefunden und zwar das der Fehler erst bei einer bestimmten Länge für den Parameterwert
    @param auftritt, nämlich wenn der Wert > 4000 ist.

    Ich vermute, das der Wert @param als UNICODE-Wert übergeben wird und es deshalb bei Werten über 4000 Zeichen zu Problemen kommt.

    Weiß jemand, ob Strings in .NET 2.0 jetzt grundsätzlich als Unicode-Zeichen gespeichert werden?

    Und wie kann ich meinem Parameterwert wieder in das ursprüngliche String-Format zurückkonvertieren?

    Viele Grüsse
    Jörg

  • #2
    Hallo,
    wie sieht die <i>Parameters</i>-Kollektion der SqlCommand-Instanz aus, die diese SP aufruft? Welcher Datentyp mit welcher Länge wird dort deklariert

    Comment


    • #3
      Hallo,

      der Tipp mit den Datentypen hat mir geholfen.
      Bis jetzt habe ich die Parameter immer so angelegt:

      cmd.Parameters.Add("@useId", 1);

      Dies hat in .NET 1.1 auch wunderbar funktioniert, aber mit 2.0 nicht mehr.
      Jetzt muß ich halt den Parameter so anlegen:
      SqlParameter p = new SqlParameter("@param", SqlDbType.VarChar);
      p.Value = "....";

      Dann klappt es super.

      Die Frage, die noch bleibt, ist aber, hat man hier bei MS was geändert zwischen 1.1 und 2.0 ?

      Viele Grüße
      Jör

      Comment


      • #4
        Hallo,

        &gt;...hat man hier bei MS was geändert zwischen 1.1 und 2.0?

        Das will ich doch hoffen, denn bei einem Versionssprung von 1.1 auf 2.0 sollte ein Unterschied spürbar sein :-)

        Spaß beseite - die Ursache für das Verhalten sehe ich in den Optimierungen für den neuen MS SQL Server 2005. Die Sache mit der Parameters-Kollektion macht sich ja nur dann bemerkbar, wenn man nicht die visuellen Fähigkeiten von Visual Studio nutzt (denn VS hat ja generell immer die Parameters-Kollektion automatisch vollständig initialisiert). Daher werden viele Anwender dieses neue Verhalten erst gar nicht zu Gesicht bekommen

        Comment

        Working...
        X