Forums Neueste Beiträge
 

Unterstützung von Namenlosen und benannten Datenbank Parametern abfragen

26/03/2010 - 07:48 von Martin Horst | Report spam
Hi,

kann man irgendwie abfragen, welche Arten von Parametern unterstützt
wird. SqlParameter verwenden ja @name, OleDbParameter aber das ?.
Ich würde gerne ermitteln, was bei welcher Verbindung unterstützt wird,
falls das überhaupt möglich ist.

Gruß
Martin
 

Lesen sie die antworten

#1 Marcel Roma
26/03/2010 - 12:29 | Warnen spam
Hallo Martin,

Am Fri, 26 Mar 2010 07:48:21 +0100 schrieb Martin Horst:

kann man irgendwie abfragen, welche Arten von Parametern unterstützt
wird. SqlParameter verwenden ja @name, OleDbParameter aber das ?.
Ich würde gerne ermitteln, was bei welcher Verbindung unterstützt wird,
falls das überhaupt möglich ist.



Die Parameter-Pràfixe sind fest im Code der einzelnen ADO.NET Provider
verdrahtet. Insofern würde schon ein switch-Block genügen. Wenn Du die
Parameter aber unbedingt dynamisch abfragen möchtest, kannst Du den Weg
über Reflection nehmen:

using System;
using System.Data.Odbc;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Reflection;

namespace GetParameterPrefix {
class Program {
static void Main(string[] args) {
Type[] providerTypes = new Type[] {
typeof(OdbcCommandBuilder),
typeof(OleDbCommandBuilder),
typeof(SqlCommandBuilder)
};

Array.ForEach(providerTypes, type => Console.WriteLine("{0} =>
{1}", type.Name, GetPrefix(type)));
Console.ReadKey(true);
}

private static string GetPrefix(Type commandBuilderType) {
MethodInfo mi commandBuilderType.GetMethod("GetParameterPlaceholder",
BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] {
typeof(int) }, null);
object cmdBuilder Activator.CreateInstance(commandBuilderType);
string prefix = (string)mi.Invoke(cmdBuilder, new object[] { 0
});
return prefix[0].ToString();
}
}
}


Gruss
Marcel

Ähnliche fragen