3 Stimmen

Der Name des OleDbParameters Besessenheit

Da die OleDbParameter verwendet (aufgrund seiner Natur) keine benannten Parameter, warum ist es so, dass die .NET OleDbParameter Klasse erwartet einen Namen? (string parametername ...)

Alle Konstruktoren benötigen einen Parameternamen, und ich bin mir nie sicher, welchen Namen ich ihm geben soll; ist mein Name ok? oder der Name meiner Großmutter?

3voto

Kev Punkte 115293

Obwohl die OleDb/Odbc-Anbieter positionale Parameter anstelle von benannten Parametern verwenden -

  1. Die Parameter müssen auf irgendeine Weise in der OleDbParameter-Sammlung identifiziert werden, wenn Sie auf sie verweisen müssen.

  2. Wichtig ist, dass bei der Konstruktion der parametrisierten SQL-Anweisung eine Variable für jeden Parameter deklariert und ihm der entsprechende Wert zugewiesen wird. und dann in der SQL-Anweisung verwendet wird, die ausgeführt wird.

Nehmen Sie zum Beispiel:

string sql = "SELECT * FROM MyTable WHERE Field = ?";
OleDbCommand cmd = new OleDbCommmand(sql, sqlConnection);
cmd.Parameters.Add("@FieldValue", OleDbType.Int32, 42);
OleDbDataReader dr = cmd.ExecuteReader();

Die ausgeführte SQL würde etwa so lauten (oder so ähnlich, glaube ich):

DECLARE @FieldValue INT;
SET @FieldValue = 42;
SELECT * FROM MyTable WHERE Field = @FieldValue

Es ist ratsam, einen Parameternamen zu verwenden, der am besten zum Namen der Spalte passt, mit der gearbeitet wird.

1voto

Ricardo Villamil Punkte 4924

Wie alles andere in der Programmierung auch, geben Sie ihm einen Namen, der für Ihren Kontext von Bedeutung ist! (Name, orderid, Stadt, etc).

Sie verwenden die Namen, um in Ihrem c#-Code auf die Parametersammlung nach Namen zuzugreifen:

OleDbCommand command = new OleDbCommand();
...//Add your parameters with names, then reference them later if you need to:
command.Parameters["name"].Value = "your name or your grandmothers name here";

Dies ist auch nützlich, wenn Sie OUT-Parameter verwenden, um den Wert nach der Ausführung Ihrer Anweisung zu extrahieren:

OleDbParameter outParam = new OleDbParameter();
outParam.Direction = ParameterDirection.Output;
outParam.DbType = DbType.Date;
outParam.ParameterName = "outParam";
command.Parameters.Add(outParam);
command.ExecuteNonQuery();
DateTime outParam = Convert.ToDateTime(command.Parameters["outParam"].Value);

1voto

Joe Punkte 117971

Es gibt Schnittstellen und Fabriken, die ein gewisses Maß an Unabhängigkeit vom zugrunde liegenden Anbieter für den Datenzugriff bieten - IDataParameter, DbParameter, DbProviderFactory usw.

Um dies zu unterstützen, können alle Parameter benannt werden, auch wenn der Name vom zugrunde liegenden Anbieter nicht verwendet wird.

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