Закрыть соединение SQLDataSource - PullRequest
2 голосов
/ 16 декабря 2009

Я связываю SQLDataSource с GridView, используя GridView.DataBind(), и выполнение этих запросов часто занимает значительное время.

Какой код будет отменять текущее DataBind()?

Кажется, я не могу найти какой-либо способ остановить DataBind() или даже закрыть соединение с БД.

Попытка повторного связывания:

myConn.ConnectionsString = ""
myConn.SelectCommand = ""
myGrid.DataSource = Nothing
myGrid.DataBind()

Попытка утилизации

myConn.Dispose()
myGrid.Dispose()

Ни одна попытка фактически не закрывала соединение. Oracle по-прежнему указывает, что он все еще подключен и выполняет запрос.

Ответы [ 5 ]

1 голос
/ 21 декабря 2009

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

0 голосов
/ 22 декабря 2009

Просто закройте Соединение и освободите все ресурсы.

myConn.Close();
myConn.Dispose();
0 голосов
/ 22 декабря 2009

Использование блока {} подходит для таких ситуаций. используйте ваши соединения с использованием блока

0 голосов
/ 21 декабря 2009

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

Вот один пост, который может помочь вам начать работу.

интеллектуальный пейджинг с сеткой данных

0 голосов
/ 16 декабря 2009

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

Для этого подпишитесь на событие onDataBinding GridView.

Подробнее о ручном связывании GridView вы можете прочитать здесь: http://www.aarongoldenthal.com/post/2009/04/19/Manually-Databinding-a-GridView.aspx

...