2 Stimmen

C#: SqlCeParameter DbType für nVarChar?

Zunächst einmal mag ich es, Datentypen zu spezifizieren, und ich verabscheue AddWithValue Funktionen.

Ich baue eine lokale SqlCeServer 3.5 Datenbankanwendung unter .NET 4.0, die auf dem PC des Benutzers ausgeführt wird.

Als ich die Tabelle erstellt habe, habe ich NVarChar(50) um meine Stringfelder zu spezifizieren.

Dies scheint gut zu funktionieren, und ich kann die Tabelle öffnen, um zu überprüfen, ob alles gut funktioniert hat in Microsoft SQL Server Management Studio 2008 .

Wenn ich Daten in meine Tabellen einfüge, verwende ich

public static SqlCeParameter ParameterString(string ColumnName, string value) {
  SqlCeParameter p = new SqlCeParameter();
  p.ParameterName = string.Format("@{0}", ColumnName);
  p.DataType = DbType.String;
  p.Size = 50;
  p.Value = value;
  return p;
}

Wenn ich diese Daten einfüge, treten keine Fehler auf, aber die Daten werden nicht eingefügt. Andere Datentypen ( int , DateTime , float usw.) werden ohne Probleme eingefügt.

F: Gibt es eine andere DbType Ich muss angeben, dass ich einfügen möchte als NVarChar ?

3voto

Guffa Punkte 663241

En DbType enum ist generisch für alle Datenbanken, enthält also nicht alle für SQL Server spezifischen Datentypen. Verwenden Sie eine SqlDbType :

SqlCeParameter p = new SqlCeParameter(ColumnName, SqlDbType.NVarChar, 50);
p.Value = value;

2voto

Chris Haas Punkte 50077

Aus irgendeinem Grund gibt es zwei Eigenschaften, die Sie verwenden können, um den Typ festzulegen, DbType y SqlDbType . Laut MSDN:

SqlDbType und DbType sind miteinander verknüpft. Daher wird durch das Setzen des DbType der SqlDbType in einen unterstützenden SqlDbType geändert.

Así que SqlDbType ist der primäre Typ, der nur DbType ändert es in etwas Ähnliches.

Vielleicht möchten Sie sich auch informieren über diese Stelle wo sie ein Problem bei der Angabe hatten Length s größer als 255.

1voto

Senad Meškin Punkte 13317

Ja,

SqlDbType.NVarChar

Ich hoffe, das hilft

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X