Текст, который будет в конце сценария выведен на экран, будет храниться в переменной SOut. Первоначально в эту переменную записываем заголовок:
SOut='BCE ЗАПИСИ ИЗ ТАБЛИЦЫ phone.dbf:
';
Для перемещения по записям набора RS
используется так называемыйOpen()
автоматически устанавливается на первую запись. Перебор всех записей производится в цикле while
, условием выхода из которого является перемещение курсора за последнюю запись таблицы (при этом свойство EOF
объекта Recordset
станет равным True
).
//Перебираем все записи набора данных RS
while (!RS.EOF) {
…
}
Для доступа к полям текущей записи используется коллекция Fields
, содержащая значения всех полей; чтобы получить значение конкретного поля, нужно указать в круглых скобках имя этого поля в кавычках, скажем, RS.Fields('Name')
. Метод MoveNext()
выполняет переход к следующей записи таблицы:
while (!RS.EOF) {
//Формируем строку со значениями трех полей, которые разделены
//символами табуляции
s=RS.Fields('LastName')+' '+RS.Fields('Name')+' '+ RS.Fields('Phone');
//В конце строки ставим символ перевода строки
s+='
';
//Добавляем сформированную строку к переменной SOut
SOut+=s;
//Переходим к следующей записи
RS.MoveNext();
}
Закрывается объект Recordset
с помощью метода Close()
:
//Закрываем объект Recordset
RS.Close();
После этого сформированный в переменной sout текст выводится на экран:
//Выводим на экран строку SOut
WScript.Echo(SOut);
Полностью сценарий ListRecords1.js приведен в листинге 9.2.
/*******************************************************************/
/* Имя: ListRecords1.js */
/* Язык: JScript */
/* Описание: Просмотр записей из таблицы базы данных */
/*******************************************************************/
//Объявляем переменные
var
RS, //Экземпляр объекта Recordset
SSource, //Строка с текстом SQL-запроса к БД
SConnect, //Строка с параметрами соединения с БД
SOut, //Строка, в которой сохраняется выходная информация
s;
//Формируем SQL-запрос к таблице Phone
SSource = 'SELECT * FROM Phone';
//Формируем строку с параметрами соединения с БД
//(указываем нужный DSN)
SConnect = 'DSN=PhoneDS';
//Создаем объект Recordset
RS=WScript.CreateObject('ADODB.Recordset');
//Открываем набор записей-результат запроса
RS.Open(SSource,SConnect);
SOut='ВСЕ ЗАПИСИ ИЗ ТАБЛИЦЫ phone.dbf:
';
//Перебираем все записи набора данных RS
while (!RS.EOF) {
//Формируем строку со значениями трех полей, которые разделены
//символами табуляции
s=RS.Fields('LastName')+' '+RS.Fields('Name')+' '+RS.Fields('Phone');
//В конце строки ставим символ перевода строки
s+='
';
//Добавляем сформированную строку к переменной SOut
SOut+=s;
//Переходим к следующей записи
RS.MoveNext();
}
//Закрываем объект Recordset
RS.Close();
//Выводим на экран строку SOut
WScript.Echo(SOut);
/************* Конец *********************************************/
Для получения набора записей Recordset
можно не создавать его непосредственно, как это было сделано в ListRecords1.js, а воспользоваться методом Execute()
объекта Connection
. В качестве иллюстрации такого подхода рассмотрим сценарий ListRecords2.js (листинг 9.3).
Сначала в этом сценарии создается объект Connection
и устанавливается связь с нашей базой данных (DSN=PhoneDs
):
//Формируем строку с параметрами соединения с БД
//(указываем нужный DSN)
SConnect = 'DSN=PhoneDS';
//Создаем объект Connection
Connect=WScript.CreateObject('ADODB.Connection');
//Устанавливаем связь с БД
Connect.Open(SConnect);
Для получения всех записей из таблицы Phone используется тот же запрос, что и в сценарии ListRecords1.js:
//Формируем SQL-запрос к таблице Phone
SSource = 'SELECT * FROM Phone';
//Выполняем SQL-запрос, в результате создается объект Recordset
RS=Connect.Execute(SSource);
В результате переменная RS
становится нужным нам экземпляром объекта Recordset
. После этого записи из набора RS
обрабатываются точно так же, как в сценарии ListRecords1.js.
/*******************************************************************/