Consulta parametrizada en C# con SYBASE

21/04/2006 - 10:54 por Rubén | Informe spam
Hola,

estaría muy agradecido que me puediesen ayudar.

Tengo que tratar con una base de datos Sybase. Necesito realizar una
consulta parametrizada y no sé cómo identificar el parámetro dentro de la
cadena de consulta, es decir, lo que hago es:

OleDbConnection con = new OleDbConnection(miCadenaDeConexión);
con.Open();

string consulta = "SELECT FECHA, ID,... FROM MI_TABLA
WHERE FECHA BETWEEN '2006/04/01' AND '2006/04/10'
AND ID = parámetro";

OleDbDataReader dr;
OleDbCommand cmd = new OleDbCommand(consulta, con);
cmd.CommandTimeout = 3600;
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new OleDbParameter("parámetro", OleDbType.VarChar));
cmd.Parameters["parámetro"].Value = unaVariableTipoString;
cmd.Parameters["parámetro"].Direction = ParameterDirection.Input;
dr = cmd.ExecuteReader();

Sé que en Oracle los parámetros se identifican con dos puntos, es decir
:parámetro, pero aquí no me funciona.

Gracias por su atención,

Rubén.

Preguntas similare

Leer las respuestas

#1 Rubén
21/04/2006 - 11:15 | Informe spam
Bueno, ya lo he resuelto.

La solución para quien le interese es substituir el parámetro por un ?, así
la consulta quedaría:

string consulta = "SELECT FECHA, ID,... FROM MI_TABLA
WHERE FECHA BETWEEN '2006/04/01' AND '2006/04/10'
AND ID = ?";

Incluso para las fechas también valdría, eso sí, especificando como tipo de
parámetro que se trata de una fecha:

string consulta = "SELECT FECHA, ID,... FROM MI_TABLA
WHERE FECHA BETWEEN ? AND ?
AND ID = ?";




"Rubén" wrote:

Hola,

estaría muy agradecido que me puediesen ayudar.

Tengo que tratar con una base de datos Sybase. Necesito realizar una
consulta parametrizada y no sé cómo identificar el parámetro dentro de la
cadena de consulta, es decir, lo que hago es:

OleDbConnection con = new OleDbConnection(miCadenaDeConexión);
con.Open();

string consulta = "SELECT FECHA, ID,... FROM MI_TABLA
WHERE FECHA BETWEEN '2006/04/01' AND '2006/04/10'
AND ID = parámetro";

OleDbDataReader dr;
OleDbCommand cmd = new OleDbCommand(consulta, con);
cmd.CommandTimeout = 3600;
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new OleDbParameter("parámetro", OleDbType.VarChar));
cmd.Parameters["parámetro"].Value = unaVariableTipoString;
cmd.Parameters["parámetro"].Direction = ParameterDirection.Input;
dr = cmd.ExecuteReader();

Sé que en Oracle los parámetros se identifican con dos puntos, es decir
:parámetro, pero aquí no me funciona.

Gracias por su atención,

Rubén.
Respuesta Responder a este mensaje
#2 Fran Peula Ariza
21/04/2006 - 11:32 | Informe spam
Yo como lo suelo hacer, para mayor legibilidad es sustituir esto

cmd.Parameters.Add(new OleDbParameter("parámetro", OleDbType.VarChar));

por la creación de un parámetro con su nombre, y sus datos, y referirme a él
por el nombre. Alg oasí:

OleDbParameter param = new OleDbParameter("@parametro",unaVariableTipoString);
param.Direction = ParameterDirection.Input;
param.DbType = OleDbType.VarChar;

Luego la sentencia sería:

string consulta = "SELECT FECHA, ID,... FROM MI_TABLA WHERE FECHA BETWEEN
'2006/04/01' AND '2006/04/10' AND ID = @parametro";

Saludos

Fran Peula Ariza


"Rubén" escribió:

Hola,

estaría muy agradecido que me puediesen ayudar.

Tengo que tratar con una base de datos Sybase. Necesito realizar una
consulta parametrizada y no sé cómo identificar el parámetro dentro de la
cadena de consulta, es decir, lo que hago es:

OleDbConnection con = new OleDbConnection(miCadenaDeConexión);
con.Open();

string consulta = "SELECT FECHA, ID,... FROM MI_TABLA
WHERE FECHA BETWEEN '2006/04/01' AND '2006/04/10'
AND ID = parámetro";

OleDbDataReader dr;
OleDbCommand cmd = new OleDbCommand(consulta, con);
cmd.CommandTimeout = 3600;
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new OleDbParameter("parámetro", OleDbType.VarChar));
cmd.Parameters["parámetro"].Value = unaVariableTipoString;
cmd.Parameters["parámetro"].Direction = ParameterDirection.Input;
dr = cmd.ExecuteReader();

Sé que en Oracle los parámetros se identifican con dos puntos, es decir
:parámetro, pero aquí no me funciona.

Gracias por su atención,

Rubén.
Respuesta Responder a este mensaje
#3 Rubén
21/04/2006 - 13:35 | Informe spam
Con la arroba tengo el mismo problema que con los dos puntos, es decir, si
pongo @parámetro en la sentencia me da el siguiente error: Debe declarar la
variable @parámetro.

Supongo que sea por incompatibilidad de Sybase y no se pueda utilizar
nombres de parámetros dentro de la sentencia sql. Seguiré utilizando las
interrogaciones, que de momento funcionan bien.

Un saludo,

Rubén.

"Fran Peula Ariza" wrote:

Yo como lo suelo hacer, para mayor legibilidad es sustituir esto

cmd.Parameters.Add(new OleDbParameter("parámetro", OleDbType.VarChar));

por la creación de un parámetro con su nombre, y sus datos, y referirme a él
por el nombre. Alg oasí:

OleDbParameter param = new OleDbParameter("@parametro",unaVariableTipoString);
param.Direction = ParameterDirection.Input;
param.DbType = OleDbType.VarChar;

Luego la sentencia sería:

string consulta = "SELECT FECHA, ID,... FROM MI_TABLA WHERE FECHA BETWEEN
'2006/04/01' AND '2006/04/10' AND ID = @parametro";

Saludos

Fran Peula Ariza


"Rubén" escribió:

> Hola,
>
> estaría muy agradecido que me puediesen ayudar.
>
> Tengo que tratar con una base de datos Sybase. Necesito realizar una
> consulta parametrizada y no sé cómo identificar el parámetro dentro de la
> cadena de consulta, es decir, lo que hago es:
>
> OleDbConnection con = new OleDbConnection(miCadenaDeConexión);
> con.Open();
>
> string consulta = "SELECT FECHA, ID,... FROM MI_TABLA
> WHERE FECHA BETWEEN '2006/04/01' AND '2006/04/10'
> AND ID = parámetro";
>
> OleDbDataReader dr;
> OleDbCommand cmd = new OleDbCommand(consulta, con);
> cmd.CommandTimeout = 3600;
> cmd.CommandType = CommandType.Text;
> cmd.Parameters.Add(new OleDbParameter("parámetro", OleDbType.VarChar));
> cmd.Parameters["parámetro"].Value = unaVariableTipoString;
> cmd.Parameters["parámetro"].Direction = ParameterDirection.Input;
> dr = cmd.ExecuteReader();
>
> Sé que en Oracle los parámetros se identifican con dos puntos, es decir
> :parámetro, pero aquí no me funciona.
>
> Gracias por su atención,
>
> Rubén.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida