powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Почему exception для датасета поднимается, а для таблицы - нет?
2 сообщений из 2, страница 1 из 1
Почему exception для датасета поднимается, а для таблицы - нет?
    #36769535
topic starter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доборый день.

На сервере имеем: а) 2 таблички, связанные fk-констрэйнтом, б) процедуру, которая нарушает это ограничение и поднимает исключение.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
use myDb;

create table t1(id int primary key);
go
create table t2(id int primary key, t1_id int references t1(id));
go

insert into t1(id) values( 1 );
insert into t2(id, t1_id) values( 10 ,  1 );
go

create proc uspTest as
begin
	set nocount on;
	begin try
		select * from t2; 
		delete from t1; 
	end try
	begin catch
		raiserror('uspTest error',  16 ,  1 );
	end catch;
end;
go

На клиенте имеем такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
      Dim da As New SqlDataAdapter
      da.SelectCommand = New SqlCommand("EXEC uspTest;")

      REM заполняем датасет - исключение поднимается, все нормалек
      Using conn As SqlClient.SqlConnection = NewConnection()  -- функция возвращает открытое соединение
        da.SelectCommand.Connection = conn
        Dim ds As New DataSet
        da.Fill(ds)
      End Using

      REM заполняем таблицу - исключение НЕ поднимается!!
      Using conn As SqlClient.SqlConnection = NewConnection()
        da.SelectCommand.Connection = conn
        Dim dt As New DataTable
        da.Fill(dt)
      End Using


Вопрос 1. Почему исключение поднимается при заполнении датасета, но не поднимается при заполнении таблицы?
Вопрос 2 (возможно, это уже в форум MS SQL Server, не знаю). Если на сервере убрать из процедурки select * from t2 и оставить только delete from t1, то исключение прекрасно поднимается в обоих случаях и при заполнении таблицы, и при заполнении датасета. Почему наличие select'а в процедуре мешает возникновению исключения на клиенте при заполнении таблицы?

PS: MS SQL Server 2005 + VS 2005, и прошу извинить мой бейсик.
...
Рейтинг: 0 / 0
Почему exception для датасета поднимается, а для таблицы - нет?
    #36770150
topic starter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос снимается, ответ получен на другом форуме. Ответ таков: нужно читать больше учебников и уяснить себе наконец, чем именно Dataset отличается от Datatable.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Почему exception для датасета поднимается, а для таблицы - нет?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]