Ayuda con uso de parametros en ADO.NET

03/08/2004 - 19:19 por Juan Sebastian Gil | Informe spam
Tengo una pregunta y se relaciona con lo siguiente.
Me encuentro desarrollando un software a modo plantilla que pueda interactuar con datos en Access y Sql Server pero en las sentencias SQL que uso las tengo con parametros por motivos de seguridad y poder evitar sql injection. Estos parametros los uso como SQLParameters para SQL Server y OledbParameters para Access y la pregunta es la siguiente:

Puede acces ejecutar sentencias que lleven parametros ???
Si no como se evita SQL Injection en Access ???
Si la forma de hacerlono es con los parametros como se haria ???

Preguntas similare

Leer las respuestas

#1 Alejandro Perez
04/08/2004 - 00:28 | Informe spam
Hola Juan, aqui te dejo un ejemplo:

OleDbCommand cm = new OleDbCommand("SELECT * FROM
Productos WHERE
IdCategoria=@IdCategoria",oleDbConnection1);
cm.Parameters.Add("@IdCategoria",1);

DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter(cm);

da.Fill(ds);
dataGrid1.DataSource=ds;

Alejandro Perez
MCSD/MCDBA/MCT
Caracas - Venezuela

Tengo una pregunta y se relaciona con lo siguiente.
Me encuentro desarrollando un software a modo plantilla


que pueda interactuar con datos en Access y Sql Server
pero en las sentencias SQL que uso las tengo con
parametros por motivos de seguridad y poder evitar sql
injection. Estos parametros los uso como SQLParameters
para SQL Server y OledbParameters para Access y la
pregunta es la siguiente:

Puede acces ejecutar sentencias que lleven parametros ???
Si no como se evita SQL Injection en Access ???
Si la forma de hacerlono es con los parametros como se


haria ???
.

Respuesta Responder a este mensaje
#2 Alejandro Perez
04/08/2004 - 19:49 | Informe spam
Hola Juan!, exacto, la diferencia es la siguiente: Para
acceder a datos en un servidor SQL Server 7.0 o superior,
lo mas eficiente es utilizar las clases del namespace
System.Data.Sqlclient. Ahora bien, si vas a trabajar con
bases de datos SQL Server 6.5 o Microsoft Access entre
otras, entonces puedes acceder a estos datos mediante las
clases del namespace System.Data.Oledb.

Con respecto a los parametros, lo haces de igual manera,
cada parametro (@nombre), que tengas en tu sentencia SQL,
tienes que luego pasarlo por la coleccion de parametros
del command.

Cuidate!
Alejandro Perez
MCSD/MCDBA/MCT
Caracas - Venezuela


OleDbCommand cm = new OleDbCommand("SELECT * FROM
Productos WHERE
IdCategoria=@IdCategoria",oleDbConnection1);
cm.Parameters.Add("@IdCategoria",1);

DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter(cm);

da.Fill(ds);
dataGrid1.DataSource=ds;




Muchas gracias Alejandro. segun veo se hace igual que


como para sqlserver, pero la diferencia radica en el tipo
de objeto. Realmente no tengo en este momento como probar
que verdaderamente si funcione pero yo tenia como
entendido que en access se trabajaban los parametros para
las sentencias por ejemplo:

Select * from Productos where idCategoria = ?

y la duda mia radicaba en como saber que el parametro que


llegaba ahi era el correcto que yo le estaba enviando al
objeto comamand pero con la aclaracion tuya esta teoria ya
no es necesaria pues se trabajaria como yo las trabajao en
sql server por ejemplo:

SqlCommand cm = new SqlCommand("SELECT * FROM
Productos WHERE


IdCategoria=@IdCategoria",SqlConnection1);
cm.Parameters.Add("@IdCategoria",1);

DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cm);

da.Fill(ds);
dataGrid1.DataSource=ds;
.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida