Cómo enlazar parámetros a través de ODBC C #?

Necesito enlazar parámetros en la consulta ODBC desde C #. Este es el código de muestra, pero VS me dice que falta un parámetro.

OdbcCommand cmd = conn.CreateCommand(); cmd.CommandText = "SELECT * FROM user WHERE id = @id"; cmd.Parameters.Add("@id", OdbcType.Int).Value = 4; OdbcDataReader reader = cmd.ExecuteReader(); 

¿Cuál es la syntax para enlazar valores en ODBC?

Odbc no puede usar parámetros con nombre. Esto significa que la cadena de comando usa marcadores de posición para cada parámetro y este marcador de posición es un solo signo de interrogación, no el nombre del parámetro.

OdbcCommand.Parameters

Luego debe agregar los parámetros en la colección en el mismo orden en el que aparecen en la cadena de comandos

 OdbcCommand cmd = conn.CreateCommand(); cmd.CommandText = "SELECT * FROM [user] WHERE id = ?"; cmd.Parameters.Add("@id", OdbcType.Int).Value = 4; OdbcDataReader reader = cmd.ExecuteReader(); 

También tiene otro problema, la palabra USER es una palabra clave reservada por cada base de datos de MS Access y si desea usarla como nombre de campo o nombre de tabla, entonces se requiere que incluya cada referencia entre corchetes. Recomiendo encarecidamente, si es posible, cambiar el nombre de la tabla porque se verá este problema muy a menudo.

usar "?" en lugar de @ si está utilizando ODBC.

Intenta hacer lo siguiente:

 OdbcCommand cmd = conn.CreateCommand(); cmd.CommandText = "SELECT * FROM user WHERE id = ?"; cmd.Parameters.Add("@id", OdbcType.Int).Value = 4; OdbcDataReader reader = cmd.ExecuteReader();