обработка эксепшенов из хранимой процедуры

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
RuslanG
Новичок
Новичок
 
Сообщения: 37
Зарегистрирован: 17.08.2006 (Чт) 14:59

обработка эксепшенов из хранимой процедуры

Сообщение RuslanG » 18.08.2006 (Пт) 13:26

В общем есть код на vb,который вызывает процедуру
а в процедуре например есть такой код
IF @param1 IS NULL
BEGIN
RAISERROR('Не указан парметр!', 16, -1)
RETURN (-1)
END
как в моем коде на vb обработать этот эксепшн и вывести messagebox с ошибкой, которую выдает база данных

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 18.08.2006 (Пт) 13:48

В событии Connection_Error, например.
Либо в коллекции ADODB.Errors.
Либо в Err, если эта ошибка была последней.
Lasciate ogni speranza, voi ch'entrate.

RuslanG
Новичок
Новичок
 
Сообщения: 37
Зарегистрирован: 17.08.2006 (Чт) 14:59

Сообщение RuslanG » 18.08.2006 (Пт) 14:25

Можете пример кода привести?
А приложение не будет падать, когда такой експшн возникнет, если этот експшен обрабатывать?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 18.08.2006 (Пт) 14:41

Для 16 в программе не должна генерироваться ошибка, ее надо будет в событиях подключения отлавливать.
Lasciate ogni speranza, voi ch'entrate.

RuslanG
Новичок
Новичок
 
Сообщения: 37
Зарегистрирован: 17.08.2006 (Чт) 14:59

Сообщение RuslanG » 18.08.2006 (Пт) 14:44

можете кинуть в меня ссылкой с кодом, где подобная вещь реализована

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 18.08.2006 (Пт) 14:50

переделывать ХП надо, чтобы она при соответствующей ошибке возвращала твой номер ошибки :

Код: Выделить всё
IF @param1 IS NULL
  RETURN (-11232144) -- отсутствует  параметр


а в клиентской проге уже обрабатывать данный номер ошибки.

RuslanG
Новичок
Новичок
 
Сообщения: 37
Зарегистрирован: 17.08.2006 (Чт) 14:59

Сообщение RuslanG » 18.08.2006 (Пт) 15:02

Смотрите,
в с# у нас есть try и catch,

try{
//code
}
catch(SqlException e){
MessageBox.Show(e.Message);
}

и в месаджбокс покажет наш текст из бд, а приложение не будет падать.
можно ли так сделать в vb?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 18.08.2006 (Пт) 15:21

Код: Выделить всё
Dim cn as ADODB.Connection
...
cn.Execute SQL
Debug.Print cn.Errors(1).Number & ":" & cn.Errors(1).Description


тоже покажет :wink:

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 18.08.2006 (Пт) 15:22

другое дело, что вы ошибки райзите под 16 Severity, а вот этот вопрос вы найдете уже в BOL


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 123

    TopList