Ich versuche, diese Abfrage auszuführen:Zugang parametrisiert IN() Abfrage
SELECT * FROM Tabela1 WHERE Pole1 IN (@parameter)
Wenn das Fenster mit „Wert auswählen“ erscheint, habe ich: „10, 50“ und ich erhalte 0 Zeilen (sollte 2).
Wenn ich nur "10" oder nur "50" setze funktioniert es und gibt 1 Zeile für jede Abfrage zurück.
Ich benutze Access 2013 - was mache ich falsch?
using (DbConnection connection = new T())
{
connection.ConnectionString = query.DatabaseConnection.ConnectionString;
using (DbCommand command = connection.CreateCommand())
{
command.CommandText = query.QuerySql.Sql;
command.CommandType = CommandType.Text;
command.CommandTimeout = query.QuerySql.CommandTimeout;
if (query.QuerySql.Parameters != null)
{
foreach (var parameter in query.QuerySql.Parameters)
{
var commandParameter = command.CreateParameter();
commandParameter.ParameterName = $"@{parameter.Name}";
commandParameter.Value = parameter.Value;
command.Parameters.Add(commandParameter);
}
}
Ich schaffe die Abfrage wie folgt aus:
QuerySql sql = new QuerySql("SELECT * FROM Tabela1 WHERE Pole1 IN(@parameter)", new List<ISqlParameter>()
{
new SqlMultiNumberParameter("parameter", new List<string>() { "10", "50" }, "Test parameter")
});
die parameter.Value gibt Zeichenfolge wie folgt aus: "10, 50"
Mit freundlichen Grüßen
Michael
ausgeführt werden, da ein einzelner Parameter nicht zwei darstellen kann (oder mehr) Werte – Steve
Bitte zeigen Sie den Code, den Sie verwendet haben, um den Parameter und den Aufruf Ihrer Datenbank – Steve
zu erstellen, so dass es nicht "10, 50" in IN (10, 50) auflösen? – Roofy