Con ADO.NET contro SQL Server, non puoi usare quei ?
per i parametri - devi sempre usare @paramName
approccio.
Il ?
per i parametri senza nome è un "rimanente" ODBC ma non supportato in ADO.NET quando si utilizza SQL Server (non sono sicuro di MS-Access)