Odbc können nicht benannte Parameter verwenden. Dies bedeutet, dass die Befehlszeichenfolge für jeden Parameter Platzhalter verwendet und dieser Platzhalter ein einzelnes Fragezeichen und nicht der Parametername ist.
OdbcCommand.Parameters
Dann müssen Sie die Parameter in der Sammlung in der gleichen Reihenfolge hinzuzufügen, in der sie in der Befehlsfolge erscheint
OdbcCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT * FROM [user] WHERE id = ?";
cmd.Parameters.Add("@id", OdbcType.Int).Value = 4;
OdbcDataReader reader = cmd.ExecuteReader();
Sie haben auch ein anderes Problem ist das USER Wort eines reservierten Schlüsselwort pro MS Access-Datenbank und wenn Sie das als Feldname oder Tabellenname verwenden möchten, müssen Sie jede Referenz mit eckigen Klammern versehen. Ich schlage vor, wenn es möglich ist, diesen Tabellennamen zu ändern, weil Sie dieses Problem sehr oft treffen werden.
Was ist die genaue Fehlermeldung? – Steve
Fehler [07002] [Microsoft] [Treiber ODBC Microsoft Access] Parameter nicht ausreichend. Previsto 1. Dieser Fehler besagt, dass ein Parameter fehlt. – pava91
ODBC unterstützt keine benannten Parameter; http://msdn.microsoft.com/en-us/library/system.data.odbc.odbccommand.parameters.aspx es ordinal '' 'Platzhalter verwendet - wenn Sie Access verwenden, gibt es einen Grund für die Verwendung von ODBC anstelle von OLEDB (was wird ihnen erlauben)? –