Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как произвести полную очистку базы

25K
08 января 2008 года
polar-bear
15 / / 21.12.2007
Время от времени приложению надо нужно полностью очищать таблицу с которой оно работает.
Делаю так. Для таблицы DataTable вызываю метод Clear().Записи удалаются. Но при вызовет связвнного с таблицей TableAdapter.Update();
Ничего не происходит. В физической базе данные не исчезают. Когда удаляю по одной записи все работает. Вопрос. Неужели для удаления всех записей надо Организовывать цикл. Или можно как то это сделать побыстрее? Спасибо заранее
22K
08 января 2008 года
dotNet
25 / / 13.08.2007
Можно очистить таблицу SQL запросом
TRUNCATE TABLE 'TableName'
25K
09 января 2008 года
polar-bear
15 / / 21.12.2007
Угу, спасибо. А к какому месту в программе надо приложить этот запрос.? К TableAdapter?
22K
09 января 2008 года
dotNet
25 / / 13.08.2007
Чесно говоря незнаю.Поробуй к TableAdapter, где ты обычно запросы к базе пишеш.
552
09 января 2008 года
Ivanhoe
373 / / 30.04.2006
Вообще у адаптера DELETE-запрос установлен?
13K
11 января 2008 года
V.V.V.
59 / / 21.07.2006
TableAdapter лишь вызывает свои соответствующие методы (Update, Insert, Delete, Select) при вызове TableAdapter.Update(DataTable) - метогда. Какой из своих запросов выполнить он определяет в зависимости от DataTable.Rows.item(n).rowstate: если установлено Deleted - удаляет, Inserted - вставляет итд. Это значит что TableAdapter ровно ничего не зделает если ему передать пустую таблицу. Вариантов очистки таблицы базы есть больше чем два: 1)В цикле установить на каждую строчку RowState=Deleted. 2)Обойти TableAdapter - использовать sqlCommand:
 
Код:
'Очистим таблицу FILMS
Dim comm As New Data.FirebirdClient.FbCommand("delete from films",Me.FILMSTableAdapter.Connection)
comm.ExecuteNonQuery()

Пример для Firebird'a. Для других серверов просто пиши другой префикс (Data.SqlClient.SqlCommand итд)
552
11 января 2008 года
Ivanhoe
373 / / 30.04.2006
 
Код:
adapter.DeleteCommand = new System.Data.SqlClient.SqlCommand("DELETE * FROM Tbl", connection);
13K
11 января 2008 года
V.V.V.
59 / / 21.07.2006
Цитата: Ivanhoe
 
Код:
adapter.DeleteCommand = new System.Data.SqlClient.SqlCommand("DELETE * FROM Tbl", connection);


Только его (этот метод) надо явно вызвать. Через adapter.update() он вызван не будет так как нет ни одной строчки с атрибутом deleted (собственно нет вообще ни одной строчки). А метод adapter.Delete спрятан внутри adapterа и недоступен для явного вызова

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог