Приложение Delphi и драйвер ODBC - лучшие практики. Загрузите большой объем данных и убейте приложение - PullRequest
1 голос
/ 19 декабря 2011

У меня есть приложение, которое использует драйвер ODBC.Он более или менее построен, следуя этому небольшому руководству http://edn.embarcadero.com/article/25639.

Мой вопрос: скажем, я прошу из базы данных ввести в приложение почти 100 тыс. Записей посредством запроса.Но, прежде чем я получу результаты, приложение будет закрыто (дизайн программного обеспечения, который я не сделал).Что происходит с драйвером ODBC?Это замерзнет?Используемая драйвером память увеличится?Как мне справиться с этой «потенциальной» проблемой, если она существует?

1 Ответ

2 голосов
/ 19 декабря 2011

Я не понимаю, является ли проблема, о которой вы спрашиваете, той, с которой вы столкнулись (зависание, увеличение памяти), или только одна, которую вы спрашиваете, и в любом случае ответ, вероятно, зависит от драйвера ODBC и базы данных.Если вы на полпути извлекаете большой набор результатов и просто вызываете SQLFreeStmt (SQL_CLOSE), то что будет дальше, будет зависеть от драйвера ODBC и базы данных.Некоторые драйверы ODBC взаимодействуют с базой данных, используя протокол, который является синхронным, и драйвер ODBC не может сообщить базе данных, что ему больше не нужны строки - они просто отправляются, а драйвер ODBC не знает, кто выДалее мы должны прочитать все эти данные, но выбросить их (что может быть расценено как пауза, особенно если набор результатов большой).Некоторые могут посылать в базу данных какой-то сигнал, говорящий о прекращении отправки строк.

В любом случае, в конце, когда приложение закрыто, использование памяти ни здесь, ни там.Хорошей практикой является попытка привести в порядок, когда ваше приложение закрыто, но это не должно иметь большого значения, если драйвер не создает некоторые системные ресурсы, которые не очищаются должным образом.

...