В дополнение к параметризованному запросу (см. Ответ Адриана) вы можете использовать определение запроса с параметром и вызывать его.
Например, вы можете создать запрос с именем qry_InsSomeTable со следующим sql
PARAMETERS P_SomeField Text ( 255 );
INSERT INTO tbl_SomeTable ( P_SomeField )
VALUES (P_SomeField );
Тогда вы можете вызывать так же, как и любую хранимую процедуру
using(var cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Whatever.mdb")
{
var cmd = new OleDbCommand();
cmd.Connection = cn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = cmd.CommandText = "qry_InsSomeTable";
cmd.Parameters.AddWithValue("P_SomeField", "'^+%&/()=?_ ");
cn.Open();
cmd.ExecuteNonQuery();
}
Это особенно полезно, когда у вас есть таблица с кучей полей
Например
cmd.CommandText = @"Insert Into TableWithAlotofFields
(field1, field2, field3, field4, field5,...)
VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?..)";
cmd.Parameters.Add("value1");
cmd.Parameters.Add("value2");
cmd.Parameters.Add("value3");
cmd.Parameters.Add("value4");
cmd.Parameters.Add("value5");
против
Запрос уже определен в Access как
PARAMETERS P_field1Text Text ( 255 ), P_field2 Number, P_field3 text(15), ...;
Insert Into TableWithAlotofFields
(field1, field2, field3, field4, field5,...)
VALUES(P_field1, P_field2, P_field3, P_field4, P_field5,...)
, затем в c #
cmd.CommandText = cmd.CommandText = "qry_InsSomeTable";
cmd.Parameters.AddWithValue("P_field1", "value1");
cmd.Parameters.AddWithValue("P_field2", "value2");
cmd.Parameters.AddWithValue("P_field3", "value3");
cmd.Parameters.AddWithValue("P_field4", "value4");
cmd.Parameters.AddWithValue("P_field5", "value5");
Однако, как указывает @ David-W-Fenton, имена параметров игнорируютсяи только позиция принимается во внимание.например,
Это
cmd.Parameters.AddWithValue("P_field1", "value1");
cmd.Parameters.AddWithValue("P_field2", "value2");
не эквивалентно
cmd.Parameters.AddWithValue("P_field2", "value2");
cmd.Parameters.AddWithValue("P_field1", "value1");
Так что это кажется в основном стилистическим вразличия.