Constructor de parametros y comandos

09/02/2005 - 15:50 por Mythox | Informe spam
Hola a tod@s:
He implementado un acceso a datos y me surge el siguiente problema,
tengo el comande de selección:

SELECT Id FROM Software WHERE Id=?

Ahora tengo que ponerle ese parametro que le falta
parametro = new SqlParameter("@" + nombre,dbType);
comandoSelect.Parameters.Add(parametro);
parametro.Value = 12;

El parametro queda con las siguientes propiedades:
ParameterName = @Id
Value = 12
DbType = Int32

Entiendo que ahora, automaticamente se deberia poner el 12 en el lugar
de ? en la expresion:
SELECT Id FROM Software WHERE Id=?

Pero al ejecutar la sentencia me dice:
System.Data.SqlClient.SqlException: Incorrect syntax near '?'.

Donde puede estar el error?
El uso de @ antes del nombre del parametro, es obligatorio?

Si examino la propiedad comandoSelect.CommandText del SqlDbDataParameter
me da:
SELECT Id FROM Software WHERE Id=?

Como si no cogiese el parametro, deberia mostrarme esta propiedad el
comando tal cual se enviará a la base de datos? es decir deberia mostrar
SELECT Id FROM Software WHERE Id ??

Gracias
salu2
Mythox
 

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
09/02/2005 - 20:31 | Informe spam
Para SQL Server debes colocar siempre el nombre del parametro en la
sentencia, ya que a diferencia de oledb los parametros se asignan por nombre
y no por posicion. Es decir, tendras que cambiar el SELECT a:

SELECT Id FROM Software WHERE Id = @Id

Y luego agregar el parametro con ese mismo nombre.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo/es

Haría cualquier cosa por recuperar la juventud...
excepto hacer ejercicio, madrugar o ser un miembro útil de la comunidad.
Oscar Wilde

Preguntas similares