Андрей Попов - Windows Script Host для Windows 2000/XP
- Название:Windows Script Host для Windows 2000/XP
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2004
- Город:Санкт-Петербург
- ISBN:5-94157-197-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Андрей Попов - Windows Script Host для Windows 2000/XP краткое содержание
В книге описывается сервер сценариев Windows Script Host (WSH) версии 5.6, который является одним из стандартных компонентов Windows ХР, а также может быть установлен в более ранних версиях Windows. Приводятся сценарии на языках VBScript и JScript, иллюстрирующие применение стандартных объектов WSH 5.6, включая создание из сценариев дочерних процессов и запуск сценариев на удаленных компьютерах. В качестве более сложных примеров рассматриваются сценарии, работающие с базами данных, управляющие приложениями Microsoft Office, организующие графический пользовательский интерфейс, использующие технологии ADSI (Active Directory Service Interface) и WMI (Windows Management Instrumentation) для решения задач администрирования. Освещены вопросы практической работы с XML-файлами и создания СОМ-объектов. Особое внимание уделяется вопросам безопасности при работе со сценариями, приводятся конкретные примеры настроек политик безопасности. К книге прилагается дискета с исходными текстами большинства примеров.
Windows Script Host для Windows 2000/XP - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
//Копирование данных из XML-файла в таблицу Phone
function XMLToBase() {
var XML,Root,NomRec,CurrNode,i;
//Создаем объект XML DOM
XML = WScript.CreateObject("Msxml.DOMDocument");
//Загружаем XML-документ из файла
XML.load(PathBook);
//Сохраняем в переменной Root ссылку на корневой элемент документа
Root=XML.documentElement;
//Перебираем все дочерние элементы первого уровня вложенности
//для корневого элемента
for (i=1; i<=Root.childNodes.length-1;i++) {
//Выделяем в коллекции XML-элементов i-й элемент
CurrNode=Root.childNodes.item(i);
//Вставляем новую запись в таблицу Phone
PersonToTable(CurrNode);
}
}
Как мы видим, в функции XMLToBase()
определяется цикл for
, в котором для каждого XML-элемента, содержащего данные об одном человеке, происходит вызов функции PersonToTable( XNode )
. В функции PersonToTable( XNode )
формируется SQL-запрос INSERT INTO Phone…
, который позволяет вставить в таблицу Phone новую запись с заданными значениями полей, например:
INSERT INTO Phone (LastName, Name, Phone, Street, House, App, Notes)
VALUES ('Иванов', 'Иван', '17-17-17', 'Садовая', '4', '6', 'Очень хороший человек')
Строится строка с SQL-запросом (переменная SSQL) следующим образом:
//Строим список значений полей добавляемой записи
SSQL+="'"+GetTagVal(XNode, "LastName")+"',";
SSQL+="'"+GetTagVal(XNode, "Name")+"',";
SSQL+="'"+GetTagVal(XNode, "Phone")+"',";
SSQL+="'"+GetTagVal(XNode, "Street")+"',";
SSQL+="'"+GetTagVal(XNode, "House")+"',";
SSQL+="'"+GetTagVal(XNode, "App")+"',";
SSQL+="'"+GetTagVal(XNode, "Note")+"'";
//Формируем текст SQL-запроса для вставки записи
SSQL="INSERT INTO Phone (LastName, Name, Phone, Street, House, App, Notes) VALUES ("+SSQL+")";
После формирования переменной SSQL происходит вызов SQL-запроса с помощью метода Execute()
объекта Connection
:
//Выполняем подготовленный SQL-запрос (добавляем запись в таблицу)
Connect.Execute(SSQL);
После окончания копирования данных в функции Main()
выводится соответствующее сообщение:
//Выводим сообщение об окончании переноса данных
WshShell.Popup("Данные из XML-файла в таблицу перенесены!", 0, "Работа с базой данных", vbInformation+vbOkOnly);
Полностью текст сценария InsertRecords.js приведен в листинге 9.1.
/*******************************************************************/
/* Имя: InsertRecords.js */
/* Язык: JScript */
/* Описание: Копирование данных из XML-файла таблицу базы */
/* данных */
/*******************************************************************/
//Объявляем переменные
var
WshShell, //Экземпляр объекта WshShell
BasePath, //Путь к текущему каталогу
PathBook, //Путь к файлу с данными
NomRec=0, //Счетчик количества записей
SConnect, //Строка с параметрами соединения с БД
Connect; //Экземпляр объекта Connection
//Инициализируем константы для диалоговых окон
var vbInformation=64,vbOkOnly=0;
//Определение значения тега tgName XML-элемента obj
function GetTagVal(obj, tgName) {
var ElemList;
//Создаем коллекцию дочерних для obj элементов, которые
//задаются тегом tgName
ElemList=obj.getElementsByTagName(tgName);
//Проверяем, есть ли в коллекции ElemList элементы
if (ElemList.length>0)
//Возвращаем значение тега tgName
return ElemList.item(0).text
else return "";
}
//Вставка в таблицу одной записи
function PersonToTable(XNode) {
var SSQL=""; //Переменная для формирования текста SQL-запроса
//Строим список значений полей добавляемой записи
SSQL+="'"+GetTagVal(XNode,"LastName")+"',";
SSQL+="'"+GetTagVal(XNode,"Name")+"',";
SSQL+="'"+GetTagVal(XNode,"Phone")+"',";
SSQL+="'"+GetTagVal(XNode,"Street")+"',";
SSQL+="'"+GetTagVal(XNode,"House")+"',";
SSQL+="'"+GetTagVal(XNode,"App")+"',";
SSQL+="'"+GetTagVal(XNode,"Note")+"'";
//Формируем текст SQL-запроса для вставки записи
SSQL="INSERT INTO Phone (LastName,Name,Phone,Street,House,App,Notes) VALUES ("+SSQL+")";
//Выполняем подготовленный SQL-запрос (добавляем запись в таблицу)
Connect.Execute(SSQL);
}
//Копирование данных из XML-файла в таблицу Phone
function XMLToBase() {
var XML,Root,NomRec,CurrNode,i;
//Создаем объект XML DOM
XML = WScript.CreateObject("Msxml.DOMDocument");
//Загружаем XML-документ из файла
XML.load(PathBook);
//Сохраняем в переменной Root ссылку на корневой элемент документа
Root=XML.documentElement;
//Перебираем все дочерние элементы первого уровня вложенности
//для корневого элемента
for (i=1; i<=Root.childNodes.length-1;i++) {
//Выделяем в коллекции XML-элементов i-й элемент
CurrNode=Root.childNodes.item(i);
//Вставляем новую запись в таблицу Phone
PersonToTable(CurrNode);
}
}
//Основная запускная функция
function Main() {
//Создаем объект WshShell
WshShell = WScript.CreateObject("WScript.Shell");
//Путь к XML-файлу с данными
PathBook=WshShell.CurrentDirectory+"\\book.xml";
//Создаем объект Connection
Connect=WScript.CreateObject("ADODB.Connection");
//Формируем строку с параметрами соединения с БД
//(указываем нужный DSN)
SConnect="DSN=PhoneDS";
//Устанавливаем связь с БД
Connect.Open(SConnect);
//Копируем данные из XML-файла в таблицу БД
XMLToBase();
//Выводим сообщение об окончании переноса данных
WshShell.Popup("Данные из XML-файла в таблицу перенесены!", 0,
"Работа с базой данных",vbInformation+vbOkOnly);
}
/******************* Начало **********************************/
Main();
/************* Конец *********************************************/
Просмотр записей в таблице
После того как мы произвели копирование записной книжки в таблицу Phone.dbf, возникает естественное желание просмотреть из сценария введенные записи. Напишем для этой цели сценарий ListRecords1.js, результат работы которого представлен на рис. 9.10.

Рис. 9.10.Записи из таблицы Phone
Основным объектом, позволяющим получить доступ к записям таблицы, является Recordset
, который представляет собой набор записей, полученных, например, в результате выполнения SQL-запроса. Создается объект Recordset
следующим образом (экземпляром объекта будет переменная RS
):
//Создаем объект Recordset
RS=WScript.CreateObject("ADODB.Recordset");
Все строки из таблицы Phone выбираются с помощью следующего SQL- запроса:
SELECT * from Phone
Этот запрос записывается в переменную SSource
:
//Формируем SQL-запрос к таблице Phone
SSource = "SELECT * FROM Phone";
Для занесения в RS требуемого набора записей используется метод Open()
, в качестве параметров которого указываются две строки. В первой из них должен содержаться SQL-запрос (переменная SSource
), а во второй — параметры соединения с базой данных (в нашем случае это переменная SConnect
, в которой записан нужный DSN):
Интервал:
Закладка: