Объект server-side | |
Реализовано в |
LiveWire 1.0 Netscape Server 3.0: добавлены методы storedProc и storedProcArgs .
|
Создание
Двигатель времени выполнения JavaScript на сервере автоматически создает объект database
. Вы указываете, что хотите использовать этот объект, вызывая его метод connect
.
Описание
Двигатель времени выполнения JavaScript на сервере создает объект database
, когда приложение соединяется с сервером баз данных. Каждое приложение имеет только один объект database
. Вы можете использовать объект database
, чтобы взаимодействовать с базой данных на сервере. В качестве альтернативы, Вы можете использовать объекты DbPool
и Connection
.
database
это одна HTML страница. То есть как только управление оставляет HTML страницу, двигатель времени выполнения закрывает подключение с базой данных. Вы должны закрыть все открытые курсоры, объекты сохраненных процедур и наборы результатов перед закрытием страницы.
|
Позволяет добавлять свойства к объекту database .
|
Примеры
Следующий пример создает объект database
и открывает стандартное подключение с базой данных customer
на сервере Informix. Имя сервера blue
, имя пользователя ADMIN
и пароль MANAGER
.
database.connect("INFORMIX", "blue", "ADMIN", "MANAGER", "inventory")
В этом примере, одновременно много клиентов могут соединятся с базой данных, но все они совместно используют одно и тоже подключение, имя пользователя и пароль.
Смотрите также
Cursor
, database.connect
Транзакции
Транзакция это группа действий базы данных, которые выполняются вместе. Или все действия вместе успешны или все вместе терпят неудачу. Когда Вы пытаетесь сделать все действия, которые делают постоянные изменения в базе данных, Вы, как говорят, совершаете транзакцию. Вы можете также прокрутить обратно транзакцию, которую Вы не совершили; это отменяет все действия.
ПРИМЕЧАНИЕ: Вы должны использовать явное управление транзакцией в любое время, когда Вы делаете изменения в базе данных. Если Вы не делаете этого, Ваша база данных может возвращать ошибки. Даже если это нетак, Вы не можете гарантировать целостность данных без использования транзакций. Кроме того, в любое время, когда Вы используете курсоры, Вы поощряете использование явных транзакций, чтобы управлять последовательностью Ваших данных.Для объекта
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
, чтобы интерпретировать причину ошибки.
Описание
Все последующие действия, которые изменяют базу данных, сгруппированы с этой транзакцией, и известны как текущая транзакция.
Примеры
Этот пример модифицирует таблицу rentals
внутри транзакции. Значения customerID
и videoID
передаются методу cursor
как свойства объекта request
. Когда объект videoReturn
типа Cursor
открывается, метод next
переходит к единственной записи в виртуальной таблице и модифицирует значение в поле returnDate
.
// Начинаем транзакцию
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
.
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)
Параметры
Возвращает
0, если запрос был успешен; иначе, ненулевой код состояния, основанный на любом сообщении об ошибках, переданном базой данных. Если метод возвращает ненулевой код состояния, используйте связанные методы majorErrorCode
и majorErrorMessage
, чтобы интерпретировать причину ошибки.
Описание
Когда Вы вызываете этот метод, двигатель времени выполнения сначала закрывает и выпускает любые в настоящее время открытые подключения. Затем повторно подключает объединение с новой конфигурацией. Вы должны убедиться, что все подключения были выпущены перед вызовом этого метода.
Пример
Следующее выражение создает четыре подключения с базой данных Informix с именем mydb на сервере с именем myserver, с именем пользователя SYSTEM и паролем MANAGER. Ждущие обработки транзакции прокручиваются обратно в конце запроса клиента:
connected
Проверяет, связано ли объединение базы данных и все подключения с базой данных.
Метод объекта |
database
|
Реализовано в | LiveWire 1.0 |
Синтаксис
connected()
Параметры
Нет.
Возвращает
True, если объединение (и следовательно специфическое подключение в объединении) в настоящее время связано с базой данных; иначе, false.
Описание
Метод connected
указывает, связан ли этот объект в настоящее время с базой данных.
Пример
Пример 1: Следующий фрагмент кода выясняет, открыто ли в настоящее время подключение. Если это не так, он повторно подключает объединение и присваивает новое значение переменной myconn
.
if (!myconn.connected()) {
Пример 2: Следующий пример использует условие
mypool.connect ("INFORMIX", "myserver", "SYSTEM", "MANAGER", "mydb", 4);
myconn = mypool.connection;
}if
, чтобы определить, связано ли приложение с сервером баз данных. Если приложение связано, выполняется функция isConnectedRoutine
; если приложение не связано, выполняется функция isNotConnected
.
if(database.connected()) {
isConnectedRoutine() }
else {
isNotConnectedRoutine() }cursor
Создает объект Cursor
.
Метод объекта |
database
|
Реализовано в | LiveWire 1.0 |
Синтаксис
cursor("sqlStatement",updatable)
Параметры
Возвращает
Новый объект Cursor
.
Описание
Метод cursor
создает объект Cursor
, который содержит строки, возвращенные SQL инструкцией SELECT
. Инструкция SELECT
передается методу cursor
как параметр sqlStatement
. Если инструкция SELECT
не возвращает строки, возникающий в результате объект Cursor
не имеет строк. Первый раз, когда Вы используете метод next
объекта, он возвращает false.
Вы можете выполнять следующие задачи с объектом Cursor
:
cursor
автоматически не отображает возвращенные данные. Чтобы отобразить эти данные, Вы должны создать заказной код HTML. Этот код HTML может отображать строки в таблице HTML, как показано в Примере 3. Метод SQLTable
более простой способ отобразить вывод запроса к базе данных, но Вы не можете передвигаться по данным, изменять данные, или управлять форматом вывода.
Примеры
Пример 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
Пример 3. Следующий пример показывает, как форматировать виртуальную таблицу, возвращенную методом
where customerID = " + request.customerID);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
ждет, пока все подключения будут выпущены.
Примеры
Следующий пример использует условие 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
.
Если Вы явно не запустили транзакцию, одиночная инструкция автоматически совершается.
Примеры
В следующем примере, метод 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()
Параметры
Нет.
Возвращает
Результат, возвращенный этим методом, зависит от используемого сервера баз данных:
Коды состояния это целые числа между 0 и 27, где 0 указывает успешное выполнение инструкции, и других чисел, указывающих на ошибку, как показано в Таблице 10.2.:
Таблица 10.2 Коды состояния базы данных.
Примеры
Этот пример модифицирует таблицу rentals
внутри транзакции. Метод updateRow
присваивает код состояния базы данных переменной statusCode
, чтобы указывать, является ли метод успешным.
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()
Параметры
Нет.
Возвращает
Строка описания, которая зависит от сервера баз данных:
connection
и DbPool
или из специальных свойств connection
или DbPool
, содержащих сообщения об ошибках и коды.
Примеры
Смотрите database.majorErrorCode
.
minorErrorCode
Вторичный код ошибки, возвращенный библиотекой продавцов базы данных.
Метод объекта |
database
|
Реализовано в | LiveWire 1.0 |
Синтаксис
minorErrorCode()
Параметры
Нет.
Возвращает
Результат, возвращенный этим методом, зависит от сервера баз данных:
ISAM
, или 0, если нет ошбки ISAM
.
Метод объекта |
database
|
Реализовано в | LiveWire 1.0 |
Синтаксис
minorErrorMessage()
Параметры
Нет.
Возвращает
Строка, возвращенная этим методом, зависит от сервера баз данных:
Метод объекта |
database
|
Реализовано в | LiveWire 1.0 |
Синтаксис
rollbackTransaction()
Параметры
Нет.
Возвращает
0, если запрос был успешен; иначе, ненулевой код состояния, основанный на любом сообщении об ошибках, переданном базой данных. Если метод возвращает ненулевой код состояния, используйте связанные методы majorErrorCode
и majorErrorMessage
, чтобы интерпретировать причину ошибки.
Описание
Этот метод отменяет все изменения начиная с последнего запроса к 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)
Первая строка просто показывает инструкцию SELECT, а вторая строка показывает результаты запроса. Это первая часть HTML, сгенерированного этими инструкциями:
connobj.SQLTable(request.sql)
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 сохраненных процедур, он ничего не сделает.
Примеры
Предположим сохраненная процедура inoutdemo
получает один параметр ввода и один параметр ввода-вывода, следующим образом:
create procedure inoutdemo ( @inparam int, @inoutparam int output)
Допустим выполняется следующий код и затем вызывается
as
if ( @inoutparam == null)
@inoutparam = @inparam + 1
else
@inoutparam = @inoutparam + 1outParameters(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
, который автоматически вызывается, когда объект должен представиться как текстовое значение или когда объект упоминается в строковой конкатенации.
Этот метод возвращает строку в следующем формате:
db "name" "userName" "dbtype" "serverName"
где
name | Имя базы данных. |
userName | Имя пользователя, соединенного с базой данных. |
dbType |
Одно из ORACLE, SYBASE, INFORMIX, DB2 или ODBC .
|
serverName | Имя сервера баз данных. |
Метод показывает пустую строку для любых атрибутов, чьи значения неизвестны.
Для информации об определении Вашего собственного метода toString
, смотрите метод Object.toString
.
Последняя Модификация: 10/31/97 16:35:15
Все мессаги сюда:yanich@inbox.ru |