Если вы генерируете строки SQL на лету без использования параметров, возможно, у вас возникнут проблемы с памятью.
Вы можете сделать это:
cmd.CommandText = "SELECT email, passwd, login_id, full_name " +
"FROM members " +
"WHERE email = '" + email + "'";
или вы можете сделать это:
string s = "SELECT email, passwd, login_id, full_name " +
"FROM members WHERE " +
"email = @email";
SqlCommand cmd = new SqlCommand(s);
cmd.Parameters.Add("@email", email);
Последний параметризован. Это будет кэшировано один раз. Первый не параметризован. Он будет кэшироваться каждый раз, когда вы напишите подобный запрос с другим значением для email
. Это взорвет вашу память.
Последний значительно превосходит. Избегает инъекционных атак. Dapper может кэшировать его один раз. SQL Server скомпилирует план выполнения один раз и кэширует его.
Вы должны (обязательно) уже использовать параметризованные запросы. Если нет, отбросьте все, что вы делаете, и сделайте это приоритетным.
Может кто-нибудь дать пример кода на c #, который создаст эту проблему с памятью. спасибо
Просто сделайте первое в цикле. Наблюдайте, как растет ваша память. Сделайте последнее в цикле. Следите, чтобы ваша память не росла.