Hola, he visto que con IDbCommand y IDbDataParameter
se podría hacer algo así:
(en este caso para SqlServer)
...
SqlCommand c = new SqlCommand(sql.ToString(), con);
c.Parameters.Add(new SqlParameter("par0", id));
c.Parameters.Add(new SqlParameter("par1", title));
c.Parameters.Add(new SqlParameter("par2", type));
c.Parameters.Add(new SqlParameter("par3", pubId));
c.Parameters.Add(new SqlParameter("par4", price));
...
c.ExecuteNonQuery();
Bien, la consulta con parámetros para
System.Data.SqlClient.SqlCommand:
insert into [titles] ([title_id], [title], [type],
[pub_id], [price], [advance],
[ytd_sales], [notes], [pubdate])
values (@par0, @par1, @par2, @par3, @par4, @par5, @par6,
@par7, @par8)
Para System.Data.OleDb.OleDbCommand:
insert into [titles] ([title_id], [title], [type],
[pub_id], [price], [advance],
[ytd_sales], [notes], [pubdate])
values (?, ?, ?, ?, ?, ?, ?, ?, ?)
Para Microsoft.Data.Odbc.OdbcCommand:
insert into `titles` (`title_id`, `title`, `type`,
`pub_id`, `price`, `advance`,
`ytd_sales`, `notes`, `pubdate`)
values (?, ?, ?, ?, ?, ?, ?, ?, ?)
Para System.Data.OracleClient.OracleCommand:
INSERT INTO titles (title_id, title, type, pub_id, price,
advance,
ytd_sales, notes, pubdate)
VALUES
(:par0, :par1, :par2, :par3, :par4, :par5, :par6, :par7, :
par8)
Como veis, son distintas las SQL con parámetros.
Quisiera saber cómo puedo saber qué formato tendrá la SQL
con parámetros si quiero utilizar IDbDataParameter y
IDbCommand.
Es decir, dónde viene definido que para SqlServer, tiene
que ser con el caracter @, ejemplo:
insert into [titles] ([title_id], [title], [type],
[pub_id], [price], [advance],
[ytd_sales], [notes], [pubdate])
values (@par0, @par1, @par2, @par3, @par4, @par5, @par6,
@par7, @par8)
Imaginad que utilizo un nuevo proveedor de BBDD, por ej,
para MySQL, que me proporcionen System.Data.MySql por
ejemplo (es decir, toda la implementación ADO.NET para
MySQL), y si quisiera utilizar IDbParameter, cómo sabría
la sintaxis específica ?.
Muchas gracias.
Leer las respuestas