Hallo zusammen!
Da bin ich wieder...
Ich bin mir nicht sicher, wo mein Problem am besten aufgehoben ist, da es Bereichsübergreifend ist. Also versuche ich es zuerst mal hier:
Ich schreibe mittels UPDATE-Statements Daten in Felder einer SQL-Datenbank. Dabei tritt aber der seltsame Effekt auf, daß bei Stringfeldern in der Datenbank immer das Feld in voller Länge gefüllt wird, obwohl ich natürlich nicht so lange WErte übergebe.
Beispiel:
Das Datenbankfeld "Name1" ist vom Typ nchar(40)
im C#-Source (nur mal die Zeilen für dieses eine Feld):
q.CommandText = "UPDATE Tabelle SET Name1 = @Name1 WHERE ID = @ID";
q.Parameters.Add("@Name1", SqlDbType.VarChar);
q.Parameters["@Name1"].Value = Wert; // string Wert
q.ExecuteNonQuery();
Wenn als Wert "NextX" übergeben wird, so enthält die DB "NextX " (auf 40 Zeichen mit Leerzeichen aufgefüllt.)
Der Inhalt wird auch mit dem Management Studio so angezeigt, ist also keine Anzeigeproblematik meines Programmes.
Was mache ich falsch? Muss ich einen anderen SqlDbType oder einen anderen Feldtyp verwenden? Oder die Daten irgendwie anders übergeben?
Danke für die Tipps.
Ciao,
N.
Da bin ich wieder...
Ich bin mir nicht sicher, wo mein Problem am besten aufgehoben ist, da es Bereichsübergreifend ist. Also versuche ich es zuerst mal hier:
Ich schreibe mittels UPDATE-Statements Daten in Felder einer SQL-Datenbank. Dabei tritt aber der seltsame Effekt auf, daß bei Stringfeldern in der Datenbank immer das Feld in voller Länge gefüllt wird, obwohl ich natürlich nicht so lange WErte übergebe.
Beispiel:
Das Datenbankfeld "Name1" ist vom Typ nchar(40)
im C#-Source (nur mal die Zeilen für dieses eine Feld):
q.CommandText = "UPDATE Tabelle SET Name1 = @Name1 WHERE ID = @ID";
q.Parameters.Add("@Name1", SqlDbType.VarChar);
q.Parameters["@Name1"].Value = Wert; // string Wert
q.ExecuteNonQuery();
Wenn als Wert "NextX" übergeben wird, so enthält die DB "NextX " (auf 40 Zeichen mit Leerzeichen aufgefüllt.)
Der Inhalt wird auch mit dem Management Studio so angezeigt, ist also keine Anzeigeproblematik meines Programmes.
Was mache ich falsch? Muss ich einen anderen SqlDbType oder einen anderen Feldtyp verwenden? Oder die Daten irgendwie anders übergeben?
Danke für die Tipps.
Ciao,
N.
Comment