SqlCommand Parameter / DataBinding Leerzeichen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von mrMo.

    SqlCommand Parameter / DataBinding Leerzeichen

    Tag zusammen,

    ich habe ein lustiges Problem bei dem ich Unterstützung benötige. Folgende Ausgangssituation:

    Ich habe mit den SqlCommand Parameter gearbeitet um Daten (in dem Fall einen String) in meine Datenbank (SQL-Server 2014 Express) zu schreiben.
    Hierzu habe ich eine separate Klasse, da steht unter anderem drin:

    VB.NET-Quellcode

    1. cmd.Parameters.AddWithValue("Info", udtTicketEinstellungen.sInfo)


    Beim Laden des Datensatzes in meine TextBox, nutze ich DataBinding.

    VB.NET-Quellcode

    1. txt_info.DataBindings.Add(New Binding("Text", udtEinstellung, "sInfo", False, DataSourceUpdateMode.OnPropertyChanged))


    Nun zeigt mir meine TextBox den Wert an, jedoch aufgefüllt mit Leerzeichen so dass es insgesamt 250 Zeichen (= Größe Feld in Datenbank) sind.


    Auch in der Datenbank steht das so drin, am Control bzw. am Laden dürfte es also nicht liegen.


    Während der Laufzeit beim Speichern, sehe ich in der Variable keinerlei Leerzeichen.

    Jemand nen Tipp, was ich falsch mache?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    also wenn die gebundene Textbox 250 Zeichen anzeigt, dann ist .sInfo wohl tatsächlich auch so lang.
    Da vermute ich als erstes, dasses in dieser Länge auch in der Db steht, whateverWarum.
    Ich verstehe auch nicht recht, was der Parameter damit zu tun haben mag. Ich weisses nicht sicher, aber ich glaub bei .AddWithValue entsteht ein In-Parameter, also etwas, was in die Db hineintransportiert - daher kann diese Stelle doch garnix damit zu tun haben, dass textlänge von 250 herauskommt.
    Ah ok, du meinst das liegt am DataBinding? Gut, dann kann ich in die Richtung weiter forschen.

    Edit: Hab den Namen des Threads mal angepasst.

    ​Edit:
    Ok, durch den Tipp von @ErfinderDesRades konnte ich das Problem ermitteln:
    Die Spalte in der Datenbank war vom Typ nchar(25). Dieser Datentyp hat immer die vorgegebene Länge, die dann ggf. durch Leerzeichen erreicht wird.
    ​Lösung: umgestellt auf nVarChar(250), damit läuft es.

    ​p.S. Lustigerweise nutze ich sonst auch immer nVarChar, hatte mich dieses mal nur verklickt 8o
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „mrMo“ ()