[Содержание] [Предыдущая] [Следующая] [Индекс]

database

Позволяет приложению взаимодействовать с реляционной базой данных.

Объект server-side
Реализовано в LiveWire 1.0
Netscape Server 3.0: добавлены методы storedProc и storedProcArgs.

Создание

Двигатель времени выполнения JavaScript на сервере автоматически создает объект database. Вы указываете, что хотите использовать этот объект, вызывая его метод connect.

Описание

Двигатель времени выполнения JavaScript на сервере создает объект database, когда приложение соединяется с сервером баз данных. Каждое приложение имеет только один объект database. Вы можете использовать объект database, чтобы взаимодействовать с базой данных на сервере. В качестве альтернативы, Вы можете использовать объекты DbPool и Connection.

Вы можете использовать объект database, чтобы соединяться с сервером баз данных и выполнять следующие задачи:

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

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

Внутренне, JavaScript создает объект database как образец класса DbBuiltin. В большинстве случаев, Вы не должны знать эту подробность реализации, потому что Вы не можете создавать образцы этого класса. Однако, Вы можете использовать свойство prototype класса DbBuiltin, чтобы добавить свойство к предопределенному объекту database. Если Вы делаете так, то добавление применяется к объекту database, используемому во всех приложениях на Вашем сервере, не только в приложении, которое сделало изменение. Это позволяет Вам открывать возможности этого объекта для всего Вашего сервера.

Резюме Свойств

prototype
Позволяет добавлять свойства к объекту database.

Резюме Методов

beginTransaction
Начинает SQL транзакцию.
commitTransaction
Совершает текущую SQL транзакцию.
connect
Соединяется со специфической конфигурацией базы данных и пользователя.
connected
Возвращает true, если объединение базы данных (и следовательно это подключение) связано с базой данных.
cursor
Создает курсор базы данных для определенной SQL инструкции SELECT.
disconnect
Разъединяет все подключения с базой данных.
execute
Выполняет определенную инструкцию SQL.
majorErrorCode
Основно код ошибки, возвращенный сервером баз данных или ODBC.
majorErrorMessage
Основное сообщение об ошибках, возвращенное сервером баз данных или ODBC.
minorErrorCode
Вторичный код ошибки, возвращенный библиотекой продавцов.
minorErrorMessage
Вторичное сообщение, возвращенное библиотекой продавцов.
rollbackTransaction
Прокручивает обратно текущую SQL транзакцию.
SQLTable
Отображает результаты запроса. Создает таблицу HTML для результатов SQL инструкции SELECT.
storedProc
Создает объект сохрненной процедуры и выполняет указанную сохрненную процедуру.
storedProcArgs
Создает прототип для Sybase сохрненной процедуры.
toString
Возвращает строку, представляющую определенный объект.

Примеры

Следующий пример создает объект database и открывает стандартное подключение с базой данных customer на сервере Informix. Имя сервера blue, имя пользователя ADMIN и пароль MANAGER.

database.connect("INFORMIX", "blue", "ADMIN", "MANAGER", "inventory")
В этом примере, одновременно много клиентов могут соединятся с базой данных, но все они совместно используют одно и тоже подключение, имя пользователя и пароль.

Смотрите также

Cursor, database.connect

Транзакции

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

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

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

ПРИМЕЧАНИЕ: Вы должны использовать явное управление транзакцией в любое время, когда Вы делаете изменения в базе данных. Если Вы не делаете этого, Ваша база данных может возвращать ошибки. Даже если это нетак, Вы не можете гарантировать целостность данных без использования транзакций. Кроме того, в любое время, когда Вы используете курсоры, Вы поощряете использование явных транзакций, чтобы управлять последовательностью Ваших данных.
Для объекта database область транзакции ограничена текущим запросом (HTML страницой) в приложении. Если приложение закрывает страницу перед вызовом метода commitTransaction или rollbackTransaction, тогда транзакция автоматически или совершается или прокручивается обратно, в зависимости от установки параметра commitflag, когда подключение было установлено. Этот параметр передается или конструктору объекта объединения или его методу connect. Для дальнейшей информации, смотрите connect.

Свойства

prototype

Представляет прототип для этого класса. Вы можете использовать прототип класса DbBuiltin, чтобы добавить свойства или методы к объекту database. Для информации о прототипах, смотрите Function.prototype.

Свойство объекта database
Реализовано в LiveWire 1.0

Методы

beginTransaction

Начинает новую SQL транзакцию.

Метод объекта database
Реализовано в LiveWire 1.0

Синтаксис

beginTransaction()

Параметры

Нет.

Возврщает

0, если запрос был успешен; иначе, ненулевой код состояния, основанный на любом сообщении об ошибках, переданном базой данных. Если метод возвращает ненулевой код состояния, используйте связанные методы majorErrorCode и majorErrorMessage, чтобы интерпретировать причину ошибки.

Описание

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

Для объекта database область транзакции ограничена текущим запросом (HTML страницой) в приложении. Если приложение закрывает страницу перед вызовом метода commitTransaction или rollbackTransaction, тогда транзакция автоматически или совершается или прокручивается обратно, в зависимости от установки параметра commitflag, когда подключение было установлено. Этот параметр обеспечивается, когда Вы делаете подключение, вызывая database.connect.

Для объектов Connection область транзакции ограничена сроком службы этого объекта. Если подключение закрыто, или объединение подключений закрыто перед вызовом метода commitTransaction или rollbackTransaction, тогда транзакция автоматически или совершается или прокручивается обратно, в зависимости от установки параметра commitflag, когда подключение было установлено. Этот параметр обеспечивается, когда Вы делаете подключение вызывая метод connect или в конструкторе DbPool.

Если нет текущей транзакции (то есть если приложение не вызвало beginTransaction), вызовы commitTransaction и rollbackTransaction игнорируются.

LiveWire Сервис Баз Данных не поддерживает вложенные транзакции. Если Вы вызываете beginTransaction, когда транзакция уже открыта (то есть Вы вызвали beginTransaction и должны все еще совершить или прокрутить обратно эту транзакцию), Вы получите сообщение об ошибках.

Примеры

Этот пример модифицирует таблицу rentals внутри транзакции. Значения customerID и videoID передаются методу cursor как свойства объекта request. Когда объект videoReturn типа Cursor открывается, метод next переходит к единственной записи в виртуальной таблице и модифицирует значение в поле returnDate.

Переменной x присваивается код состояния базы данных, указывающий успешен ли метод updateRow. Если updateRow успешен, значение x равно 0, и транзакция совершается; иначе, транзакция прокручивается обратно.

// Начинаем транзакцию
database.beginTransaction();
// Создаем объект Date со значением текущей даты
today = new Date();
// Создаем курсор на арендованное видео в виртуальной таблице
videoReturn = database.cursor("SELECT * FROM rentals WHERE
   customerId = " + request.customerID + " AND
   videoId = " + request.videoID, true);
// Устанавливаем указатель на первой строке курсора
// и модифицируем строку
videoReturn.next()
videoReturn.returndate = today;
x = videoReturn.updateRow("rentals");
// Завершаем транзакцию, совершая или прокручивая обратно
if (x == 0) {
   database.commitTransaction() }
else {
   database.rollbackTransaction() }
// Закрываем курсор
videoReturn.close();

commitTransaction

Совершает текущую транзакцию.

Метод объекта database
Реализовано в LiveWire 1.0

Синтаксис

commitTransaction()

Параметры

Нет.

Возвращает

0, если запрос был успешен; иначе, ненулевой код состояния, основанный на любом сообщении об ошибках, переданном базой данных. Если метод возвращает ненулевой код состояния, используйте связанные методы majorErrorCode и majorErrorMessage, чтобы интерпретировать причину ошибки.

Описание

Этот метод пытается совершить все действия начиная с последнего запроса к beginTransaction.

Для объекта database, область транзакции ограничена текущим запросом (HTML страницой) в приложении. Если приложение закрывает страницу перед вызовом метода commitTransaction или rollbackTransaction, тогда транзакция автоматически или совершается или прокручивается обратно, в зависимости от установки параметра commitflag, когда подключение было установлено. Этот параметр обеспечивается, когда Вы делаете подключение с объектом database или DbPool.

Для объектов Connection область транзакции ограничена сроком службы этого объекта. Если подключение выпущено, или объединение подключений закрыто перед вызовом метода commitTransaction или rollbackTransaction, тогда транзакция автоматически или совершается или прокручивается обратно, основываясь на значении commitFlag.

Если нет текущей транзакции (то есть если приложение не вызвало beginTransaction), вызовы commitTransaction и rollbackTransaction игнорируются.

LiveWire Сервис Баз Данных не поддерживает вложенные транзакции. Если Вы вызываете beginTransaction, когда транзакция уже открыта (то есть Вы вызвали beginTransaction и должны все еще совершить или прокрутить обратно транзакцию), Вы получите сообщение об ошибках.

connect

Подключает объединение со специфической конфигурацией базы данных и пользователя.

Метод объекта database
Реализовано в LiveWire 1.0

Синтаксис

connect (dbtype, serverName, username, password, databaseName)
connect (dbtype, serverName, username, password, databaseName, maxConnections)
connect (dbtype, serverName, username, password, databaseName, maxConnections, commitflag)

Параметры

dbtype
Тип базы данных; один из ORACLE, SYBASE, INFORMIX, DB2 или ODBC.
serverName
Имя сервера баз данных для соединения. Имя сервера обычно устанавливается, когда база данных инсталлирована, и различно для разных типов баз данных:

DB2: Локальный псевдоним базы данных. Под NT и UNIX, устанавливается клиентом или DB2 Процессором Командной Строки.

Informix: Сервер Informix. Под NT, определяется утилитой setnet32; под UNIX, в файле sqlhosts.

Oracle: Сервис. Под NT и UNIX, определяется в файле tnsnames.ora. Под NT, Вы можете использовать SQL*Net простую конфигурацию, чтобы определить его. Если Ваш Oracle сервер баз данных локальный, определите пустую строку для этого параметра.

ODBC: Имя источника данных. Под NT, определяется в ODBC Администраторе; под UNIX, в файле .odbc.ini. Если Вы используете Web сервер как пользователь файл .odbc.ini должен быть в Вашем основном каталоге; если как система, он должен быть в корневой директории.

Sybase: Имя сервера (параметр DSQUERY). Под NT, определяется утилитой sqledit; под UNIX, утилитой sybinit.

Если Вы сомневаетесь, смотрите администратора Вашей базы данных или системы. Для ODBC, это имя ODBC сервиса, как определено в Панели Управления.

userName
Имя пользователя для соединения с базой данных. Некоторые системы управления реляционной базой данных (RDBMS) требуют, чтобы это было Ваше имя входа в операционную систему; другие поддерживают их собственные совокупности допустимых имен пользователя. Смотрите администратора Вашей системы, если Вы сомневаетесь.
password
Пароль пользователя. Если база данных не требует пароля, используйте пустую строку ("").
databaseName
Имя базы данных для подключения с данного serverName. Если Ваш сервер баз данных поддерживает понятие нескольких баз данных на одном сервере, обеспечте имя базы данных для использования. Если это не так, используйте пустую строку (""). Для Oracle, ODBC и DB2, Вы должны всегда использовать пустую строку.

Для Oracle, определите эту информацию в файле tnsnames.ora.

Для ODBC, если Вы хотите соединиться со специфической базой данных, определите имя базы данных, указанное в определении datasource.

Для DB2, нету понятия имени базы данных; имя базы данных это всегда имя сервера (как определено в serverName).

maxConnections
(Факультативный) Число подключений, которые будут созданы и кэшироваться в объединении. Двигатель времени выполнения пытается создать так много подключений, как определено в этом параметре. Если успешно, то сохраняет эти подключения для дальнейщего использования.

Если Вы не определите этот параметр, его значение соответствует тому ,что Вы определите в Администраторе Приложения, когда Вы устанавливаете приложение как значение для Максимума Встроенных Подключений с Базой Данных.

Не забудьте, что Ваша лицензия клиента базы данных возможно определяет максимальное число подключений. Не устанавливайте этот параметр к числу выше чем позволяет Ваша лицензия. Для Sybase, Вы можете иметь в большинстве случаев 100 подключений.

Если Ваша библиотека клиента баз данных не многопоточная, она может поддерживать одновременно только одно подключение. В этом случае, Ваше приложение выполняется, как если бы Вы определили 1 для этого параметра. Для текущего списка, какие библиотеки клиента баз данных являются многопоточными, смотрите Enterprise Server 3.0 Release Note

commitFlag
(Факультативный) Булево начение, указывающее, совершать ли ждущую обработки транзакцию, когда подключение закрыто или объект завершен.

(Если транзакция находится на одной странице, объект завершается в конце страницы. Если транзакция охватывает несколько страниц, объект завершается, когда подключение возвращается в объединение.)

Если этот параметр false, ждущая обработки транзакция прокручивается обратно. Если этот параметр true, ждущая обработки транзакция совершается. Для DbPool, значение по умолчанию false; для database, значение по умолчанию true. Если Вы определяете этот параметр, Вы должны также определить параметр maxConnections.

Возвращает

0, если запрос был успешен; иначе, ненулевой код состояния, основанный на любом сообщении об ошибках, переданном базой данных. Если метод возвращает ненулевой код состояния, используйте связанные методы majorErrorCode и majorErrorMessage, чтобы интерпретировать причину ошибки.

Описание

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

Первая версия этого метода создает и кэширует одно подключение. Когда это подключение выходит из области видимости, ждущие обработки транзакции прокручиваются обратно.

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

Третья версия этого метода делает все что делает вторая версия. Кроме того, параметр commitflag указывает, что делать с ждущими обработки транзакциями, когда это подключение выходит из области видимости. Если этот параметр false (значение по умолчанию), ждущая обработки транзакция прокручивается обратно. Если этот параметр true, ждущая обработки транзакция совершается.

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

Пример

Следующее выражение создает четыре подключения с базой данных Informix с именем mydb на сервере с именем myserver, с именем пользователя SYSTEM и паролем MANAGER. Ждущие обработки транзакции прокручиваются обратно в конце запроса клиента:

connected

Проверяет, связано ли объединение базы данных и все подключения с базой данных.

Метод объекта database
Реализовано в LiveWire 1.0

Синтаксис

connected()

Параметры

Нет.

Возвращает

True, если объединение (и следовательно специфическое подключение в объединении) в настоящее время связано с базой данных; иначе, false.

Описание

Метод connected указывает, связан ли этот объект в настоящее время с базой данных.

Если этот метод возвращает false для объекта Connection, Вы не можете использовать любые другие методы этого объекта. Вы должны повторно подключиться к базе данных, используя объект DbPool, и затем получить новый объект Connection. Точно так же, если этот метод возвращает false для объекта database, Вы должны повторно соединиться перед использованием других методов этого объекта.

Пример

Пример 1: Следующий фрагмент кода выясняет, открыто ли в настоящее время подключение. Если это не так, он повторно подключает объединение и присваивает новое значение переменной myconn.

if (!myconn.connected()) {
   mypool.connect ("INFORMIX", "myserver", "SYSTEM", "MANAGER", "mydb", 4);
   myconn = mypool.connection;
}
Пример 2: Следующий пример использует условие if, чтобы определить, связано ли приложение с сервером баз данных. Если приложение связано, выполняется функция isConnectedRoutine; если приложение не связано, выполняется функция isNotConnected.

if(database.connected()) {
   isConnectedRoutine() }
else {
   isNotConnectedRoutine() }

cursor

Создает объект Cursor.

Метод объекта database
Реализовано в LiveWire 1.0

Синтаксис

cursor("sqlStatement",updatable)

Параметры

sqlStatement
Строка JavaScript, представляющая SQL инструкцию SELECT, поддерживаемую сервером баз данных.
updatable
(Факультативный) Булев параметр, указывающий, является или нет курсор модифицируемым.

Возвращает

Новый объект Cursor.

Описание

Метод cursor создает объект Cursor, который содержит строки, возвращенные SQL инструкцией SELECT. Инструкция SELECT передается методу cursor как параметр sqlStatement. Если инструкция SELECT не возвращает строки, возникающий в результате объект Cursor не имеет строк. Первый раз, когда Вы используете метод next объекта, он возвращает false.

Вы можете выполнять следующие задачи с объектом Cursor:

Метод cursor автоматически не отображает возвращенные данные. Чтобы отобразить эти данные, Вы должны создать заказной код HTML. Этот код HTML может отображать строки в таблице HTML, как показано в Примере 3. Метод SQLTable более простой способ отобразить вывод запроса к базе данных, но Вы не можете передвигаться по данным, изменять данные, или управлять форматом вывода.

Факультативный параметр updatable определяет, можете ли Вы изменять объект Cursor, который Вы создали методом cursor. Чтобы создать модифицируемый объект Cursor Вы можете определить updatable как true. Если Вы не определяете значение параметра updatable, он равен false по умолчанию.

Если Вы создаете модифицируемый объект Cursor, виртуальная таблица, возвращенная параметром sqlStatement, должна быть модифицируемой. Например, инструкция SELECT в параметре sqlStatement не может содержать предложение GROUP BY; кроме того, запрос обычно должен отыскать значение ключа в таблице. Для подробной информации о построении модифицируемых запросов, проконсультируйтесь с документацией Вашей базы данных.

Примеры

Пример 1. Следующий пример создает модифицируемый курсор custs и возвращает столбцы ID, CUST_NAME и CITY из таблицы customer:

custs = database.cursor("select id, cust_name, city from customer", true)
Пример 2. Вы можете создать инструкцию SELECT со строковым оператором конкатенации (+) и строковыми переменными типа значений свойств client или request, как показано в следующем примере:

custs = database.cursor("select * from customer
   where customerID = " + request.customerID);
Пример 3. Следующий пример показывает, как форматировать виртуальную таблицу, возвращенную методом cursor как таблицу HTML. Этот пример сначала создает объект Cursor с именем videoSet и затем показывает два столбца данных (videoSet.title и videoSet.synopsis).

// Создаем курсор videoSet
<SERVER>
videoSet = database.cursor("select * from videos
   where videos.numonhand > 0 order by title");
</SERVER>
// Начинаем создавать таблицу HTML, содержащую виртуальную таблицу
// Определяем заголовки для двух столбцов в виртуальной таблице
<TABLE BORDER>
<CAPTION> Videos on Hand </CAPTION>
<TR>
   <TH>Заголовок</TH>
   <TH>Резюме</TH>
</TR>
// Используем цикл while, чтобы выполнить итерации с каждой строкой в курсоре
<SERVER>
while(videoSet.next()) {
</SERVER>
// Используем инструкции write, чтобы отобразить данные в обоих столбцах
<TR>
   <TH><A HREF=\Q"rent.html?videoID="+videoSet.id\Q>
       <SERVER>write(videoSet.title)</SERVER></A></TH>
   <TD><SERVER>write(videoSet.synopsis)</SERVER></TD>
</TR>
// Заканчиваем цикл while
<SERVER>
}
</SERVER>
// Заканчиваем таблицу HTML
</TABLE>
Значения в столбце videoSet.title отображаются внутри тэга A, так что пользователь может нажимать их как ссылки. Когда пользователь щелкает заголовок, открывается страница rent.html и значение столбца videoSet.id передается ей как значение request.videoID.

Смотрите также

database.SQLTable, database.cursor

disconnect

Разъединяет все подключения в объединении базы данных.

Метод объекта database
Реализовано в LiveWire 1.0

Синтаксис

disconnect()

Параметры

Нет.

Возвращает

0, если запрос был успешен; иначе, ненулевой код состояния, основанный на любом сообщении об ошибках, переданном базой данных. Если метод возвращает ненулевой код состояния, используйте связанные методы majorErrorCode и majorErrorMessage, чтобы интерпретировать причину ошибки.

Описание

Перед вызовом метода disconnect, Вы должны сначала вызвать метод release для всех подключений в этом объединении базы данных. Иначе, подключение все еще рассматривается используемым системой, так что disconnect ждет, пока все подключения будут выпущены.

После разъединения с базой данных, Вы можете использовать только методы connect и connected этого объекта.

Примеры

Следующий пример использует условие if, чтобы определить, связано ли приложение с сервером баз данных. Если приложение связано, приложение вызывает метод disconnect; если приложение не связано, выполняется isNotConnectedRoutine.

if(database.connected()) {
   database.disconnect() }
else {
   isNotConnectedRoutine() }

execute

Выполняет указанную инструкцию SQL. Используйте для инструкций SQL, которые не являются запросами.

Метод объекта database
Реализовано в LiveWire 1.0

Синтаксис

execute (stmt)

Параметры

stmt
Строка, представляющая SQL выражение для выполнения.

Возвращает

0, если запрос был успешен; иначе, ненулевой код состояния, основанный на любом сообщении об ошибках, переданном базой данных. Если метод возвращает ненулевой код состояния, используйте связанные методы majorErrorCode и majorErrorMessage, чтобы интерпретировать причину ошибки.

Описание

Этот метод дает возможность приложению выполнить любую SQL инструкцию языка определения данных (DDL) или языка манипулирования данными (DML), поддерживаемую сервером баз данных, которая не возвращает курсор, типа CREATE, ALTER или DROP.

Каждая база данных поддерживает стандартное ядро инструкций DML и DDL. Кроме того, она может также поддерживать инструкции DDL и DML, специфические для этой базы данных. Вы можете использовать execute, чтобы вызвать любую из этих инструкций. Однако, каждый продавец базы данных может также обеспечить функции, которые Вы можете использовать с базой данных, которые не являются инструкциями DDL или DML. Вы не можете использовать execute, чтобы вызвать эти функции. Например, Вы не можете вызвать функцию describe Oracle или функцию load Informix методом execute.

Хотя технически Вы можете использовать execute, чтобы выполнить изменение данных (инструкции INSERT, UPDATE и DELETE), Вы должны взамен использовать объекты Cursor. Это делает Ваше приложение более независимым от базы данных. Курсоры также обеспечивают поддержку для двоичных больших объектов (BLOb) данных.

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

Если Вы явно не запустили транзакцию, одиночная инструкция автоматически совершается.

Примеры

В следующем примере, метод execute используется, чтобы удалить заказчика из таблицы customer. customer.ID представляет уникальный ID заказчика, который находится в столбце ID таблицы customer. Значение customer.ID передается инструкции DELETE как значение свойства ID request.

if(request.ID != null) {
   database.execute("delete from customer
      where customer.ID = " + request.ID)
}

majorErrorCode

Основной код ошибки, возвращенный сервером баз данных или ODBC.

Метод объекта database
Реализовано в LiveWire 1.0

Синтаксис

majorErrorCode()

Параметры

Нет.

Возвращает

Результат, возвращенный этим методом, зависит от используемого сервера баз данных:

Описание

SQL выражения могут терпеть неудачу по ряду причин, включая справочные ограничения целостности, недостаток привилегий пользователя, записи или блокировки таблицы в многопользовательской базе данных и так далее. Когда действие терпит неудачу, сервер баз данных возвращает сообщение об ошибках, указывающее причину сбоя. LiveWire Сервис Баз Данных обеспечивает два способа получения информации об ошибках: из кода состояния, возвращенного различными методами, или из специальных свойств, содержащих сообщения об ошибках и коды.

Коды состояния это целые числа между 0 и 27, где 0 указывает успешное выполнение инструкции, и других чисел, указывающих на ошибку, как показано в Таблице 10.2.:

Таблица 10.2 Коды состояния базы данных. 
Код Состояния Объяснение Код Состояния Объяснение
0 Нет ошибки 14 Null параметр ссылки
1 Недостаточно памяти 15 Объект подключения не найденный
2 Объект не инициализирован 16 Требуемая информация отсутствует
3 Ошибка преобразования типов 17 Объект не может поддерживать множественных читателей
4 База данных не зарегистрирована 18 Объект не поддерживает удаление
5 Ошибка, сообщенная сервером 19 Объект не поддерживает вставку
6 Сообщение с сервера 20 Объект не поддерживает модификацию
7 Ошибка из библиотеки продавца 21 Объект не поддерживает модификацию
8 Подключение потеряно 22 Объект не поддерживает индексы
9 Конец выборки 23 Объект не может быть удален
10 Недопустимое использование объекта 24 Обеспечено неправильное подключение
11 Столбец не существует 25 Объект не поддерживает привилегии
12 Недопустимое позиционирование внутри объекта (ошибка ограничения) 26 Объект не поддерживает курсоры
13 Возможность неподдерживается 27 Невозможно открыть

Примеры

Этот пример модифицирует таблицу rentals внутри транзакции. Метод updateRow присваивает код состояния базы данных переменной statusCode, чтобы указывать, является ли метод успешным.

Если updateRow успешен, значение statusCode равно 0, и транзакция совершена. Если updateRow возвращает значение statusCode, равное пяти или семи, отображаются значения majorErrorCode, majorErrorMessage, minorErrorCode и minorErrorMessage. Если statusCode установлен в любое другое значение, вызывается функция errorRoutine.

database.beginTransaction()
statusCode = cursor.updateRow("rentals")
if (statusCode == 0) {
   database.commitTransaction()
   }
if (statusCode == 5 || statusCode == 7) {
   write("Операция не может быть закончена.<BR>"
   write("Свяжитесь с Вашим системным администратором со следующим:<P>"
   write("Значение statusCode равно " + statusCode + "<BR>")
   write("Значение majorErrorCode равно " +
      database.majorErrorCode() + "<BR>")
   write("Значение majorErrorMessage равно " +
      database.majorErrorMessage() + "<BR>")
   write("Значение minorErrorCode равно " +
      database.minorErrorCode() + "<BR>")
   write("Значение minorErrorMessage равно " +
      database.minorErrorMessage() + "<BR>")
   database.rollbackTransaction()
   }
else {
   errorRoutine()
   }

majorErrorMessage

Основное сообщение об ошибках, возвращенное сервером баз данных или ODBC. Для ошибок сервера, оно обычно соответствует SQLCODE сервера.

Метод объекта database
Реализовано в LiveWire 1.0

Синтаксис

majorErrorMessage()

Параметры

Нет.

Возвращает

Строка описания, которая зависит от сервера баз данных:

Описание

SQL выражения могут терпеть неудачу по ряду причин, включая справочные ограничения целостности, недостаток привилегий пользователя, блокировка записи или таблицы в многопользовательской базе данных, и так далее. Когда действие терпит неудачу, сервер баз данных возвращает сообщение об ошибках, указывающее причину сбоя. LiveWire Сервис Баз Данных обеспечивает два способа получения информации об ошибках: из кода состояния, возвращенного методами connection и DbPool или из специальных свойств connection или DbPool, содержащих сообщения об ошибках и коды.

Примеры

Смотрите database.majorErrorCode.

minorErrorCode

Вторичный код ошибки, возвращенный библиотекой продавцов базы данных.

Метод объекта database
Реализовано в LiveWire 1.0

Синтаксис

minorErrorCode()

Параметры

Нет.

Возвращает

Результат, возвращенный этим методом, зависит от сервера баз данных:

minorErrorMessage

Вторичное сообщение, возвращенное библиотекой продавцов базы данных.

Метод объекта database
Реализовано в LiveWire 1.0

Синтаксис

minorErrorMessage()

Параметры

Нет.

Возвращает

Строка, возвращенная этим методом, зависит от сервера баз данных:

rollbackTransaction

Прокручивает обратно текущую транзакцию.

Метод объекта database
Реализовано в LiveWire 1.0

Синтаксис

rollbackTransaction()

Параметры

Нет.

Возвращает

0, если запрос был успешен; иначе, ненулевой код состояния, основанный на любом сообщении об ошибках, переданном базой данных. Если метод возвращает ненулевой код состояния, используйте связанные методы majorErrorCode и majorErrorMessage, чтобы интерпретировать причину ошибки.

Описание

Этот метод отменяет все изменения начиная с последнего запроса к beginTransaction.

Для объекта database, область транзакции ограничена текущим запросом (HTML страницой) в приложении. Если приложение закрывает страницу перед вызовом метода commitTransaction или rollbackTransaction, тогда транзакция автоматически или совершается или прокручивается обратно, в зависимости от установки параметра commitflag, когда подключение было установлено. Этот параметр обеспечивается, когда Вы создаете подключение с объектом database или DbPool.

Для объектов Connection область транзакции ограничена сроком службы этого объекта. Если подключение выпущено, или объединение подключений закрыто перед вызовом метода commitTransaction или rollbackTransaction, тогда транзакция автоматически или совершается или прокручивается обратно, основываясь на значении commitFlag.

Если нет текущей транзакции (то есть если приложение не вызвало beginTransaction), вызовы commitTransaction и rollbackTransaction игнорируются.

LiveWire Сервис Баз Данных не поддерживает вложенные транзакции. Если Вы вызываете beginTransaction, когда транзакция уже открыта (то есть Вы вызвали beginTransaction и должны все еще совершить или прокрутить обратно транзакцию), Вы получите сообщение об ошибках.

SQLTable

Показывает результаты запроса. Создает таблицу HTML для результатов SQL инструкции SELECT.

Метод объекта database
Реализовано в LiveWire 1.0

Синтаксис

SQLTable (stmt)

Параметры

stmt
Строка, представляющая SQL инструкцию SELECT.

Возвращает

Строку, представляющую таблицу HTML, со строкой и столбцом для каждой строки и столбца в запросе.

Описание

Хотя SQLTable не дает явного контроля над форматированием вывода, это самый простой способ отобразить результаты запроса. Если Вы хотите настроить вид вывода, используйте объект Cursor, чтобы создать Вашу собственную функцию вывода.

Обратите внимение

Каждая Sybase таблица, которую Вы используете с курсором, должна иметь уникальный индекс.

Пример.

Если connobj это объект Connection и request.sql содержит SQL запрос, тогда следующие выражения JavaScript отобразят результаты запроса в таблице:

write(request.sql)
connobj.SQLTable(request.sql)
Первая строка просто показывает инструкцию SELECT, а вторая строка показывает результаты запроса. Это первая часть HTML, сгенерированного этими инструкциями:

select * from videos
<TABLE BORDER>
<TR>
<TH>заголовок</TH>
<TH>идентификатор</TH>
<TH>год</TH>
<TH>категория</TH>
<TH>число</TH>
<TH>numonhand</TH>
<TH>резюме</TH>
</TR>
<TR>
<TD>Оранжевые Часы</TD>
<TD>1</TD>
<TD>1975</TD>
<TD>Научная Фантастика</TD>
<TD>5</TD>
<TD>3</TD>
<TD> Little Alex, played by Malcolm Macdowell,
and his droogies stop by the Miloko bar for a
refreshing libation before a wild night on the town.
</TD>
</TR>
<TR>
<TD>Sleepless In Seattle</TD>
...
Как показывает этот пример, SQLTable генерирует таблицу HTML с заголовками для каждого столбца в таблице базы данных и строками для каждой строки в таблице базы данных.

storedProc

Создает объект сохрненной процедуры и выполняет указанную сохраненную процедуру.

Метод объекта database
Реализовано в Netscape Server 3.0

Синтаксис

storedProc (procName, inarg1, inarg2, ..., inargN)

Параметры

procName
Строка, определяющая имя сохраненной процедуры для выполнения.
inarg1, ..., inargN
Входные параметры, которые будут переданы процедуре, разделенные запятыми.

Возвращает

Новый объект Stproc.

Описание

Область действия объекта сохраненной процедуры это одна страница приложения. Другими словами, все методы, которые будут выполнены для любого образца storedProc должны вызываться на той же самой странице приложения, на которой объект был создан.

Когда Вы создаете сохраняемую процедуру, Вы можете определить значения по умолчанию для любого из параметров. Тогда, если параметр не назначен, когда сохраненная процедура выполнена, процедура использует значение по умолчанию. Однако, когда Вы вызываете сохраненную процедуру из server-side приложения JavaScript, Вы должны указать, что Вы хотите использовать значение по умолчанию, печатая "/Default/" вместо параметра. (Не забудьте, что JavaScript чувствителен к регистру.) Например:

spObj = connobj.storedProc ("newhire", "/Default/", 3)

storedProcArgs

Создает прототип для DB2, ODBC или Sybase сохраненной процедуры.

Метод объекта database
Реализовано в Netscape Server 3.0

Синтаксис

storedProcArgs (procName, type1, ..., typeN)

Параметры

procName
Имя процедуры.
type1, ..., typeN
Каждый typeI одно из следующего: "IN", "OUT" или "INOUT" Определяет тип каждого параметра: ввод ("IN"), вывод ("OUT") или ввод/вывод ("INOUT").

Возвращает

Ничего.

Описание

Этот метод необходим только для DB2, ODBC или Sybase сохраненных процедур. Если Вы вызовите его для Oracle или Informix сохраненных процедур, он ничего не сделает.

Этот метод обеспечивает имя процедуры и параметры для этой сохраняемой процедуры. Сохраненные процедуры могут принимать параметры, которые предназначены только для ввода ("IN"), только для вывода ("OUT"), или для ввода и вывода ("INOUT").

Вы должны создать один прототип для каждой DB2, ODBC или Sybase сохраненной процедуры, которую Вы используете в Вашем приложении. Дополнительные прототипы для этой же сохраненной процедуры игнорируются.

Вы можете определять параметр INOUT или как INOUT или как OUT. Если Вы используете параметр INOUT сохраненной процедуры как OUT параметр, LiveWire Сервис Баз Данных передает значение NULL для этого параметра.

Примеры

Предположим сохраненная процедура inoutdemo получает один параметр ввода и один параметр ввода-вывода, следующим образом:

create procedure inoutdemo ( @inparam int, @inoutparam int output)
as
if ( @inoutparam == null)
@inoutparam = @inparam + 1
else
@inoutparam = @inoutparam + 1
Допустим выполняется следующий код и затем вызывается outParameters(0), результат будет 101:

database.storedProcArgs("inoutdemo", "IN", "INOUT")
spobj= database.storedProc("inoutdemo", 6, 100);
answer = spobj.outParameters(0);
Значение answer равно 101. С другой стороны, допустим, что Вы выполняете этот код:

database.storedProcArgs("inoutdemo", "IN", "OUT")
spobj = database.storedProc("inoutdemo", 6, 100);
answer = spobj.outParameters(0);
В этом случае, значение answer равно 7.

toString

Возвращает строку, представляющую определенный объект.

Метод объекта database
Реализовано в LiveWire 1.0

Синтаксис

toString()

Параметры

Нет.

Описание

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

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

Этот метод возвращает строку в следующем формате:

db "name" "userName" "dbtype" "serverName"
где

name
Имя базы данных.
userName
Имя пользователя, соединенного с базой данных.
dbType
Одно из ORACLE, SYBASE, INFORMIX, DB2 или ODBC.
serverName
Имя сервера баз данных.

Метод показывает пустую строку для любых атрибутов, чьи значения неизвестны.

Для информации об определении Вашего собственного метода toString, смотрите метод Object.toString.


[Содержание] [Предыдущая] [Следующая] [Индекс]

Последняя Модификация: 10/31/97 16:35:15


Права © 1997 Netscape Communications Corporation



Все мессаги сюда:yanich@inbox.ru
Hosted by uCoz