Einige .NET-Anbieter haben in der Implementierung des Befehlsbaumeisters eine statische DeriveParameters()
-Methode. Wenn ja, können Sie diese Methode verwenden, um die Liste der Parameter abzurufen und dann die Werte einzufüllen. Es bietet eine schöne Möglichkeit, die Informationen "zu entdecken":
IDbCommand cmd = conn.CreateCommand();
cmd.CommandText = "SomeProcedure";
cmd.CommandType = CommandType.StoredProcedure;
// Um einen fest codierten Verweis auf einen bestimmten Anbietertyp zu vermeiden, holen Sie sich ein
// Befehlsbaumeisterobjekt und verwenden Sie Reflektion, um die Ableitungsmethode aufzurufen
DbCommandBuilder cb = dbfact.CreateCommandBuilder();
MethodInfo mi = cb.GetType().GetMethod( "DeriveParameters",
BindingFlags.Public | BindingFlags.Static );
mi.Invoke( null, new object[] { cmd } );
// Informationen zu jedem Parameter anzeigen
foreach ( IDataParameter p in cmd.Parameters )
Console.WriteLine( "{0}, {1}, {2}", p.ParameterName,
p.DbType.ToString(), p.Direction.ToString() );
IDataParameter prm = (IDataParameter)cmd.Parameters["SomeParam"];
prm.Value = "xyz";
IDataReader rdr = cmd.ExecuteReader();