| |
В этой главе рассмотрены типы ошибок, которые могут появиться при работе с реляционными БД.
В главе имеются следующие разделы:
При написании приложения на языке JavaScript Вы должны знать о различных ошибках. В тех случаях, когда Вы используете LiveWire Database Service для взаимодействия с реляционной БД, ошибки могут возникать по разным причинам. Например, SQL-операторы могут не выполняться из-за ограничений ссылочной целостности/referential integrity, потери привилегий доступа, блокировки записи или таблицы в многопользовательской БД и т.д. Если акция терпит неудачу, сервер БД возвращает сообщение об ошибке с указанием причины.
Ваш код должен проверять наличие ошибок и обрабатывать их соответствующим образом.
Return-значение методов объектов LiveWire может указывать, имеется ошибка или нет. Методы могут возвращать значения различных типов. В зависимости от типа Вы можете получать различную информацию о возможных ошибках.
Если метод возвращает число, return-значение может
представлять число либо статус-код. Например, Cursor.columns
возвращает количество столбцов в курсоре, а Cursor.updateRow
возвращает число, обозначающее наличие или отсутствие ошибки.
Методы Cursor.columns
и Resultset.columns
возвращают числовое значение.
Следующие методы возвращают число, обозначающее статус-код:
Connection.beginTransaction
Connection.commitTransaction
Connection.execute
Connection.majorErrorCode
Connection.minorErrorCode
Connection.release
Connection.rollbackTransaction
Connection.SQLTable
Cursor.close
Cursor.deleteRow
Cursor.insertRow
Cursor.updateRow
database.beginTransaction
database.connect
database.commitTransaction
database.disconnect
database.execute
database.majorErrorCode
database.minorErrorCode
database.rollbackTransaction
database.SQLTable
database.storedProcArgs
DbPool.connect
DbPool.disconnect
DbPool.majorErrorCode
DbPool.minorErrorCode
DbPool.storedProcArgs
Resultset.close
Stproc.close
Если числовое return-значение метода указывает статус-код, 0 означает успешное
выполнение, а ненулевое число указывает на ошибку. Если статус-код ненулевой, Вы
можете использовать методы
majorErrorCode
и majorErrorMessage
ассоциированного
объекта
Connection
, database
или DbPool
для того,
чтобы найти информацию об ошибке. В некоторых случаях методы minorErrorCode
и
minorErrorMessage
предоставляют дополнительную информацию об ошибке.
О return-значениях этих методов см. "Методы Работы с Ошибками".
Если метод возвращает объект, он может быть либо реальным объектом, либо null. Если метод возвращает null, возможно, возникла ошибка JavaScript. В большинстве случаев, если ошибка возникла в БД, метод возвращает верный объект, но программа устанавливает код ошибки.
Глобальная функция blob
возвращает объект.
Кроме того, следующие методы также возвращают объект:
Connection.cursor
Connection.storedProc
database.cursor
database.storedProc
DbPool (constructor)
DbPool.connection
Stproc.resultSet
Создаёте ли Вы курсор, результирующий набор или хранимую
процедуру, Вы должны проверять и существование созданного объекта, и возможное
наличие кода ошибки. Вы можете использовать методы
majorErrorCode
и majorErrorMessage
для тестирования
ошибки.
Например, Вы можете создать курсор и проверить его корректность кодом такого вида:
// Создаётся Cursor-объект.
custs = connobj.cursor ("select id, name, city
from customer order by id");
// Прежде чем продолжить, убедитесь, что возвращён реальный курсор // и что нет ошибки БД.
if ( custs && (connobj.majorErrorCode() == 0) ) {
// Получить первый ряд.
custs.next();
// ... процессинг рядов курсора ...
//Закрыть курсор.
custs.close();
}
else
// ... обработка ошибок ...
Следующие методы возвращают Булевы значения:
Connection.connected
Cursor.next
database.connected
DbPool.connected
Resultset.next
Если метод возвращает Boolean-значение, true
обычно указывает на успешное выполнение, в то время как false
указывает на некоторое другое состояние. Return-значение false
не
означает реальной ошибки; оно может означать и условие успешного завершения.
Например, Connection.connected
возвращает false
для указания на то, что Connection
-объект в данное время не
соединён. Это может означать, что ошибка возникла при создании Connection
-объекта или что ранее использованное соединение было намеренно разорвано. Эти
события не являются ошибками метода connected
. Если ошибка возникла
при создании объекта, Ваш код должен отлавливать ошибку в работе этого метода.
Если соединение было разорвано, Вы можете установить его вновь.
Второй пример - Cursor.next
возвращает false
, когда Вы
ряды курсора закончились. Если оператор SELECT
, используемый для
создания Cursor
-объекта, находит таблицу, но не находит столбцы,
соответствующие условию оператора SELECT
, создаётся пустой курсор.
При первой Вашей попытке вызова метода next
для этого курсора он
возвращает
false
. Ваш код должен учитывать такую возможность.
Если метод возвращает строку, Вы обычно не получаете сообщения об ошибке. Если, однако, метод возвращает null, проверьте ассоциированный error-метод.
Следующие методы возвращают строку:
Connection.majorErrorMessage
Connection.minorErrorMessage
Cursor.columnName
database.majorErrorMessage
database.minorErrorMessage
DbPool.majorErrorMessage
DbPool.minorErrorMessage
Resultset.columnName
Некоторые методы не возвращают значение. Вы не можете ничего сказать о возможных ошибках в работе этих методов. Следующие методы не возвращают значения:
Connection.release
Cursor.close
database.disconnect
DbPool.disconnect
Resulset.close
Как уже было сказано, многие методы возвращают числовой
статус-код. Если метод возвращает статус-код, может иметься и соответствующие
код ошибки и сообщение от сервера БД.
LiveWire имеет четыре метода для объектов Connection
, DbPool
и
database
для доступа к error-кодам и сообщениям БД.
Вот эти методы:
majorErrorMessage
: наивысшее
сообщение об ошибке, возвращённое базой данных.minorErrorMessage
: наименьшее сообщение об ошибке, возвращённое
базой данных.majorErrorCode
: наивысший error-код, возвращённый БД. Обычно он
соответствует SQLCODE сервера.minorErrorCode
: второй/secondary error-код, возвращённый базой
данных.Результаты, возвращаемые этими методами, зависят от используемого сервера БД и статус-кода БД. В большинстве случаев Вам нужно рассматривать только наивысший error-код или сообщение об ошибке, чтобы понять суть ошибки. Меньшие error-код и сообщение используются только в некоторых ситуациях.
ПРИМЕЧАНИЕ: Вызов другого метода объектов
Connection
,DbPool
илиdatabase
может зачистить/reset error-коды и сообщения. Чтобы исключить потерю информации, не забудьте проверить эти методы, перед тем как продолжить.
После получения сообщения об ошибке ваше приложение может
вывести сообщение пользователю. Ваше сообщение может включать строку,
возвращённую majorErrorMessage
или
minorErrorMessage
, или число, возвращённое majorErrorCode
или
minorErrorCode
. Дополнительно можно обработать число или строку,
перед тем как вывести их.
При обсчёте строки, возвращённой majorErrorMessage
и
minorErrorMessage
, LiveWire возвращает строку поставщика БД с
присоединённым дополнительным текстом.
Детальную информацию о возвращаемых значениях см. в описаниях этих методов в
книге
Серверный JavaScript. Справочник
.
В следующей таблице дан список статус-кодов,
возвращаемых различными методами. Netscape рекомендует не использовать эти
значения напрямую. Вместо этого, если метод возвращает ненулевое значение,
используйте ассоциированные методы majorErrorCode
и majorErrorMessage
для определения конкретной ошибки.
Статус-Код | Пояснение | Статус-Код |
Пояснение
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
---|
Дата последнего обновления: 29 сентября 1999 г.
© Copyright ╘ 1999 Sun Microsystems, Inc. Некоторая часть Copyright
╘ 1999 Netscape Communications Corp. Все Права Зарезервированы.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |