мне нужно пометить пакет строк в базе данных как "обработанный".
В старые времена, когда все было проще, я создавал SQL-код, который гласил:
UPDATE Readings SET IsProcessed = 1 WHERE ReadingDateTime IN (
"2010-10-07 22:02:13.327",
"2010-10-07 22:02:14.213",
"2010-10-07 22:02:15.595",
...
"2010-10-07 23:03:36.981")
, просматривая список дат:
sql = "UPDATE Readings SET IsProcessed = 1 WHERE ReadingDateTime IN (";
foreach (DateTime datetime in dates)
{
sql = sql + CRLF+ DateTimeToSql(datetime)+",";
}
sql = sql+")";
И выдать SQL:
ExecuteNonQuery(connection, sql);
И все было хорошо.
Теперь я хочу попытаться сделать что-то трудное; я хочу попробовать использовать параметры:
sql = ???;
command.CommandText = sql;
DbCommand command = connection.CreateCommand();
foreach (DateTime datetime in readings)
{
command.Parameters.Add(new SqlParameter(???, SqlDbType.DateTime) {Value = datetime});
}
using (DbTransaction transaction = connection.BeginTransaction())
{
command.Transaction = transaction;
command.ExecuteNonQuery();
transaction.Commit();
}
Единственная хитрость заключается в том, что помещать в строку sql
и что помещать в каждую итерацию цикла параметров. Им нужно какое-то имя.
Какой рекомендуемый способ назвать произвольное количество параметров?