Я использую базу данных для выполнения некоторых запросов и собирался оптимизировать вещи.
Я в основном делаю два статических объекта :
private static Database db = ... ;
private static DbCommand cmd = db.GetSqlStringCommand("... where col = @colParam");
....
cmd.Prepare(); //one call
А потом подумал просто сделать:
db.AddInParameter(cmd, "colParam", DbType.String, "some value on each call")
при вызове.
Работает только один раз. После первого звонка я получаю
Имена переменных должны быть уникальными в пакете запроса или хранимой процедуре
сообщение об ошибке, касающееся параметра @colParam
.
Итак, я думал о замене дополнения на набор при каждом вызове:
db.SetParameterValue(cmd, "colParam", "some value on each call")
Но это безопасно? У меня такое чувство ... ??!?!?!?.
Потоково ли безопасно иметь только один объект команды, для которого я устанавливаю значение при каждом вызове? Что, если два пользователя установят значение одновременно? Что происходит потом?