Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Die Auswahlabfrage funktioniert nicht mit Parametern, die Parameters.AddWithValue verwenden

Ich nehme an, Ihr Code ist eigentlich nicht ganz wie dargestellt, da es derzeit nicht kompiliert werden würde - Sie verwenden cmdR bevor Sie es deklarieren.

Zuerst versuchen Sie, benannte Parameter zu verwenden, und gemäß der Dokumentation von OdbcCommand.Parameters , das wird nicht unterstützt:

Außerdem würde ich persönlich die Verwendung von AddWithValue vermeiden wie auch immer - ich würde so etwas verwenden:

string sql = "select * from user_tbl where emp_id = ? and birthdate = ?";
using (var connection = new OdbcConnection(...))
{
    connection.Open();
    using (var command = new OdbcCommand(sql, connection))
    {
        command.Parameters.Add("@emp_id", OdbcType.Int).Value = userValidate.EmployeeId;
        command.Parameters.Add("@birthdate", OdbcType.Date).Value = userValidate.BirthDate;
        using (var reader = command.ExecuteReader())
        {
            // Use the reader here
        }
    }
}

Dieses Beispiel verwendet Namen, die den .NET-Namenskonventionen folgen, und demonstriert die ordnungsgemäße Entsorgung von Ressourcen ... sowie die Behebung des Parameterproblems.

Ich finde es etwas unglücklich, dass Sie einen Namen für den Parameter angeben müssen, wenn Sie ihn zum Befehl hinzufügen, obwohl Sie ihn nicht in der Abfrage verwenden können, aber so ist das Leben.