2013-08-06 12 views
12

Ho bisogno di associare i parametri alla query ODBC da C#. Questo è il codice di esempio, ma VS mi dice che manca un parametro.Come associare i parametri tramite ODBC C#?

OdbcCommand cmd = conn.CreateCommand(); 

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

Qual è la sintassi per i valori di associazione su ODBC?

+0

Qual è il messaggio di errore esatto? – Steve

+0

ERRORE [07002] [Microsoft] [Driver ODBC Microsoft Access] Parametri insufficienti. Previsto 1. Questo errore indica che manca un parametro. – pava91

+0

ODBC non supporta i parametri nominati; http://msdn.microsoft.com/en-us/library/system.data.odbc.odbccommand.parameters.aspx utilizza ordinali '?' segnaposto - se si utilizza Access esiste un motivo per utilizzare ODBC anziché OLEDB (che permetterà loro)? –

risposta

26

Odbc non è possibile utilizzare i parametri denominati. Ciò significa che la stringa di comando utilizza segnaposto per ogni parametro e questo segnaposto è un singolo punto interrogativo, non il nome del parametro.

OdbcCommand.Parameters

allora avete bisogno di aggiungere i parametri della collezione nello stesso ordine in cui appaiono nella stringa di comando

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

Hai anche un altro problema, la parola utente è un riservato parola chiave per MS Access Database e se si desidera utilizzarlo come nome di campo o nome tabella, è necessario racchiudere ogni riferimento con parentesi quadre. Suggerisco caldamente, se è possibile, di cambiare il nome della tabella perché verrai colpito molto spesso da questo problema.

+0

è corretto! grazie – pava91

+0

@ pava91: segna questo come la risposta corretta quindi ... – MiMo

6

utilizzare "?" in sostituzione di @ se si utilizza ODBC.

cercare di fare come segue:

OdbcCommand cmd = conn.CreateCommand(); 

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

Trascorro un'intera ora cercando di capirlo, grazie amico !!!! –

Problemi correlati